typescript:索引类实例

时间:2014-04-12 02:30:44

标签: javascript typescript

此行没有错误

            if (!t[1]) {
                t[1] = [];
            }

            t[1].push(key);

t是Test类型,它不能直接索引。但是,它有一个成员,数据,可以索引。那么为什么这些行没有错误。

ITestData模拟嵌套对象,分别使用整数和字符串键。

{ 
  1 : {
        "hello" : {}
  }
  2 : { ..
}

demo

代码:

export interface ITestData {
    [idx:number] : {[prop:string]:any}
}

export interface ITest {
    data:ITestData
}

export class Test implements ITest {
        data:ITestData = {};
}

class Greeter {
    data:ITestData = {};

    private del(t:Test, key:string) {
        if (!t[1]) {
            t[1] = [];
        }

        t[1].push(key);
   }
}

1 个答案:

答案 0 :(得分:1)

JavaScript中的所有内容都可以通过字符串(以及使用number.toString()的数字)编制索引。 TypeScript将允许按字符串(和数字)进行索引。

您遇到的更简单的版本:

var foo = {data:123};
var bar = foo[0]; // Valid : bar is of type any 

您可以阻止可以将分配给索引成员,例如索引时,在以下情况下只能分配Foo

var bas: {[index:string]:Foo}; 

但是你不能一起禁用索引(即你可以限制读/写的类型,但不能限制你可以读/写的事实)。