时间:2016-03-03 09:31:28

标签: dynamic typescript typescript1.8

如果动态类属性由[]运算符访问,则可以声明动态类属性的类型,如下例所示:

class Foo {
  [key: string]: number;
}

let a = new Foo();
let b = a['bar']; //Here, the compiler knows that b is a number

但是有没有办法在不使用[]运算符的情况下声明相同的内容? 写这个的方法:

let a = new Foo();
let b = a.someProperty;

让TypeScript知道someProperty的类型为number,因为我们对它说: Foo上的所有未知属性的类型为。< / p>

1 个答案:

答案 0 :(得分:2)

我不认为这是可能的。定义类时,您可以定义有关其属性和方法的“静态”信息。如果你指定索引器 - 它就意味着 - 类的对象将具有索引器,而不是任何属性。毕竟那些类是什么 - 定义业务实体的结构。

我知道做类似于你想要的事情的唯一方法是使用对象文字。例如,这将起作用:

let x: { PropA: number, [x: string]: number };
x = { PropA: 1, PropX: 2, PropY: 3, PropZ: 4 };

希望这有帮助。