如何使用 Typescript 在 Ember 应用程序中注入服务
how to inject a service in Ember App with Typescript
我正在遵循本指南:
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() 时遇到打字稿错误:
属性 'findAllContacts' 在类型 'ComputedProperty'.ts(2339)
上不存在
如何使用 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
}
};
我正在遵循本指南: 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() 时遇到打字稿错误: 属性 'findAllContacts' 在类型 'ComputedProperty'.ts(2339)
上不存在如何使用 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
}
};