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

Class 为什么TypeScript不能强制为类属性声明的类型?,class,typescript,types,Class,Typescript,Types,这是一个很大的代码库,所以我只是寻找一般的指针 在一个文件中,函数接受一个参数a:MyClass 在运行时,typeof a.b产生string 在VSCode中,我在a.b的b上点击F12,并被带到另一个文件(根据import语句判断是正确的): export class MyClass { ... b: string[]; // brought to this line } 在TypeScript环境中,a.b如何成为string而不是类声明中所说的string[]?我应该寻找什么

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

在一个文件中,函数接受一个参数
a:MyClass

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

在VSCode中,我在
a.b
b
上点击F12,并被带到另一个文件(根据import语句判断是正确的):

export class MyClass {
  ...
  b: string[]; // brought to this line
}

在TypeScript环境中,
a.b
如何成为
string
而不是类声明中所说的
string[]
?我应该寻找什么可能导致这种行为呢?

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

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

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

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

TypeScript中的类型声明仅具有提示性。因为TypeScript被转换成纯JavaScript,所以它不能保证变量的实际内容

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

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

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

谢谢,我开始跟踪它,发现
a
作为声明为返回
any
的函数的返回值。嗯……我们似乎已经击败了语言的暗示能力对
any
正在选择退出静态键入。谢谢,我开始跟踪它,发现
a
作为声明返回
any
的函数的返回值。嗯……我们似乎已经击败了语言的暗示能力对
any
正在选择退出静态键入。