使用'任何'是否有任何缺点?而不是像这样的情况下的接口?
首先使用Item的接口:
imports ...
export interface Item { name: string; }
@Component({
selector: 'app-root',
template: `
my template
`
})
export class AppComponent {
private itemsCollection: AngularFirestoreCollection<Item>;
items: Observable<Item[]>;
constructor(private afs: AngularFirestore) {
this.itemsCollection = afs.collection<Item>('items');
this.items = this.itemsCollection.valueChanges();
}
}
没有界面,使用&#39;任何&#39;
imports...
@Component({
selector: 'app-root',
template: `
my template
`
})
export class AppComponent {
private itemsCollection: AngularFirestoreCollection<any>;
items: Observable<Any[]>;
constructor(private afs: AngularFirestore) {
this.itemsCollection = afs.collection<any>('items');
this.items = this.itemsCollection.valueChanges();
}
}
谢谢
答案 0 :(得分:0)
在这种情况下使用any
是一种不好的做法。基本上,你扔掉了TypeScript(which is type system)最重要的部分之一,以及它的好处(编译时类型检查)。除非必要,否则不这样做。
我建议仅在两种情况下使用any
:
当你真正处理不可预测类型的对象时。即便如此,您可能希望首先声明interface
类型来声明合同(在运行时可能会或可能不会实现)。
当您使用&#34; ambient declarations&#34;对于没有相应@types/*
npm模块的JavaScript库。这真的是最后的手段。好消息是,环境声明现在越来越少。