如果我有这种形式的课程:
class MyClass {
a: string
}
然后我定义一个变量:
let obj: MyClass = { a: 2 }
我正如预期的那样收到Typescript错误,因为2不是字符串。但是,如果MyClass
包含构造函数:
class MyClass {
constructor(a: string) {
}
}
然后,在相同的变量声明之后,Typescript保持沉默。有没有办法使用构造函数仍然使用该类作为接口?感谢。
答案 0 :(得分:4)
TypeScript保持沉默,因为MyClass
的第二个示例没有为a
定义任何成员变量,只有构造函数参数。您仍然必须声明成员变量才能进行检查:
class MyClass {
a: string
constructor(a: string) {
this.a = a // assign to self as an example
}
}
然而,TS为此提供了一些很好的语法糖。如果您在构造函数参数前放置了public
,private
或protected
等访问可见性关键字,则typescript会自动为您分配该关键字,并具有该级别的可见性。所以这就等同于上面的内容,我认为你可能会在这里做。
class MyClass {
constructor(public a: string) {}
}
答案 1 :(得分:0)
let obj: MyClass = { a: 2 }
您正在为该类提供整数2。
你要做的是
let obj: MyClass = { a: '2' }
另一条评论很好地解释了。