javascript - 如何使用 Typescript 在 Ember App 中注入服务
问题描述
我正在关注本指南: https ://v4.chriskrycho.com/2018/typing-your-ember-update-part-1.html
这里我有一个服务,它只有一个函数 findAllContacts:
export default class ContactPicker extends Service {
findAllContacts(): Promise<Contact[]> {
return Promise.resolve(getContact());
}
}
declare module '@ember/service' {
interface Registry {
'contact-picker': ContactPicker;
}
}
和电话簿组件:
import Component from '@ember/component';
import Computed from "@ember/object/computed";
import ContactPicker from '../services/contact-picker';
import { inject as service } from '@ember/service';
export default class PhonebookView extends Component {
contactPicker: Computed<ContactPicker> = service('contact-picker');
didInsertElement() {
let contacts = this.contactPicker.findAllContacts(); //error
}
};
但是在调用 this.contactPicker.findAllContacts() 时出现打字稿错误: “ComputedProperty”.ts(2339) 类型上不存在属性“findAllContacts”
如何使用 Typescript 注入服务?
解决方案
尝试:
import Component from '@ember/component';
import ContactPicker from '../services/contact-picker';
import { inject as service } from '@ember/service';
export default class PhonebookView extends Component {
@service declare contactPicker: ContactPicker;
didInsertElement() {
let contacts = this.contactPicker.findAllContacts(); //error
}
};
推荐阅读
- php - ServiceEntityRepository 中自动装配 RegistryInterface 的问题
- c++ - 在 UWP 中使用 IAsyncOperation 继续任务
- cmd - 如何使用 cmd 按特定顺序合并文本文件
- web-scraping - 登录在 Splash API 中有效,但在使用 SplashRequest 时无效
- git - 如何在 .gitignore 中忽略 Xamarin 的模拟器文件?
- terraform - Terraform - 如何将输入变量限制为可能选择的列表
- react-native - 我应该如何在 react native expo 托管应用程序中导入 AccessibilityInfo?
- javascript - JavaScript:if else 语句多个条件
- c++ - 我可以知道有多少进程在 C/C++ 中打开同一个文件吗?
- java - BeanIO - 在编组以固定宽度文件时禁用填充或跳过字段(如果为空)