创建实现Typescript接口的Object

时间:2017-07-25 16:12:19

标签: typescript

我正在为我的数据提供一个公共接口,但出于性能和内存的原因,我想使用一个Object,而不是一个Class。接口上没有代码,它纯粹是一种数据结构。

我希望能够将我的对象声明为使用接口,这样如果我更改接口,它将显示为错误并且不会错过。

interface DataStructure {
   key1: string;
   key2: number;
   key3: boolean;
   key4: null;
}

const defaultData: {[key: string]: PropertyDescriptor} = {
   key1: {writable: true, enumerable: true},
   key2: {writable: true, enumerable: true},
   key3: {writable: true, enumerable: true}
};

var myData = Object.create(null, defaultData);

我希望此报告key4对象中缺少defaultData的错误,但现在还不能弄清楚。

(这是需要的,因为可能需要相同结构的数万个对象,并且当它们更容易重新使用它们时不想浪费GC - 也只想简单地映射存储,所以不需要对象原型链。)

1 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西:

const defaultData: {[K in keyof DataStructure]: PropertyDescriptor} = {
    ...
}

然后编译器将编译说:

  

键入' {key1:{writable:true;可枚举的:真实的; }; key2:{writable:   真正;可枚举的:真实的; }; KEY3:...'不能分配给' {   key1:PropertyDescriptor; key2:PropertyDescriptor; KEY3:   PropertyDescriptor的; key4:PropertyDes ......'。

     

财产' key4'类型' {key1:{writable:true;   可枚举的:真实的; }; key2:{writable:true;可枚举的:真实的; };   KEY3:...'