为什么TypeScript不能强制为类属性声明的类型?

时间:2017-05-09 18:52:18

标签: class typescript types

这是一个很大的代码库,所以我只是在寻找一般指针。

在一个文件中,函数采用参数a:MyClass

在运行时,typeof a.b会产生string

在VSCode中,我在b的{​​{1}}上点击F12,然后(正确地,通过import语句判断)到另一个文件:

a.b

export class MyClass { ... b: string[]; // brought to this line } 的TypeScript环境中如何才能成为a.b而不是string,就像类声明所说的那样?我应该寻找什么可能导致这种行为?

1 个答案:

答案 0 :(得分:5)

TypeScript中的类型声明仅是提示性的。因为TypeScript被转换为纯JavaScript,所以它无法保证变量的实际内容。

即使在TypeScript中,在变量中放置不同类型的对象也相当容易:

let myClass = new MyClass();
myClass.b = "I'm a string placed into a string array" as any;

注意最后一行末尾的as any,这会从表达式中删除类型信息,并允许将其放入任何类型的变量或参数中。