【发布时间】:2018-07-02 09:53:27
【问题描述】:
我有两个班级:
class A {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
class B extends A {
}
我还有一个对象,我想将这些类的实例用作键:
const storage: Storage = {};
所以它看起来像这样:
const a = new A('Neo', 25);
const b = new A('Smith', 31);
storage[a] = 'What are you trying to tell me? That I can dodge bullets?';
storage[b] = 'Never send a human to do a machine's job.'
然后我想通过键来区分值,例如:
const keys = Object.keys(storage);
keys.forEach(key => {
if (key instanceof A) {
console.log('This is Neo');
} else if (key instanceof B) {
console.log('This is Smith');
}
})
应该如何看起来像Storage 界面,因为在打字稿中
索引签名参数类型必须是“字符串”或“数字”
【问题讨论】:
-
这个用例看起来只需要一个数组对就可以了,比如
const storage: Array<[A, string]>和storage.push([a, 'What are...']);。为什么需要通过对象索引storage?你能展示一个重要的用例吗?
标签: javascript typescript interface