TypeScript 不会hash[key]
像使用hash.myKey
. 因此,要获得设计时和编译时检查,您必须更改公开此信息的方式以允许代码使用点属性语法...
所以而不是:
class Test {
get(key: string) :string{
var hash = {'some-key': 1, 'some-other-key': 3};
return hash[key];
}
}
var test = new Test();
test.get('myKey');
你可以暴露:
class Test {
public hash = { someKey: 1, someOtherKey: 3};
}
var test = new Test();
test.hash.myKey; // you'll get a warning here
这仅在此设计适合您正在做的事情时才有效 - 但您会以这种方式收到警告,因为 TypeScript 将为它创建一个匿名类型hash
并确保仅使用已知属性。
更新:我根据反馈更新了示例。值得注意的是,虽然 using'some-key'
会阻止您使用点表示法(因此,如果可以的话,绝对值得删除连字符) - 您仍然可以获得代码完成。