如何防止在TypeScript中指定错误的类型?
我是TypeScript新手,希望摆脱潜入数据结构的错误类型。我认为TypeScript会禁止以下赋值如何防止在TypeScript中指定错误的类型?,typescript,type-safety,Typescript,Type Safety,我是TypeScript新手,希望摆脱潜入数据结构的错误类型。我认为TypeScript会禁止以下赋值this.myString=myArgument,因为myArgument的类型未知 class MyClass { private myString : string; constructor(myArgument) { this.myString = myArgument; } } let myInstance = new MyClass(3);
this.myString=myArgument
,因为myArgument
的类型未知
class MyClass {
private myString : string;
constructor(myArgument) {
this.myString = myArgument;
}
}
let myInstance = new MyClass(3);
console.log("my instance", myInstance);
在运行时,myInstance.myString
将是一个非常不受欢迎的数字:(我知道我可能可以添加myArgument:string
作为参数参数类型声明,但我认为TypeScript的优点之一是类型推断,这在这里应该很容易
如何防止数据结构中出现错误的类型?如果要确保所有值都必须具有指定的类型,可以在
tsconfig.json中将noImplicitAny
设置为true。它无法推断myArgument将是什么类型。它可以是任何类型。方法是为它指定一个类型。但我正在调用newmyclass
带有3,它应该将此调用标记为不正确。或者这是不确定的,因为我可以在构造函数中执行任何操作(停止问题)。至少不应该允许非类型化变量与类型化变量相配,反之亦然,不是吗?在您的情况下,myArgument的类型是any,因此调用是正确的。如果需要,您可以使用tsconfig.json“noImplicitAny”中的编译器选项完全禁用任何变量:同样,Typescript不做任何运行时检查,只做编译时和静态分析。在运行时,所有类型信息都会丢失,剩下的就是纯js。:)谢谢noImplicitAny
就是我要找的!你能不能提供一个被接受的答案?