typescript - 使用构造函数时作为接口的类

时间:2018-03-30 08:29:34

标签: typescript

如果我有这种形式的课程:

class MyClass {
   a: string  
}

然后我定义一个变量:

let obj: MyClass = { a: 2 }

我正如预期的那样收到Typescript错误,因为2不是字符串。但是,如果MyClass包含构造函数:

class MyClass {
   constructor(a: string) {
   }
}

然后,在相同的变量声明之后,Typescript保持沉默。有没有办法使用构造函数仍然使用该类作为接口?感谢。

2 个答案:

答案 0 :(得分:4)

TypeScript保持沉默,因为MyClass的第二个示例没有为a定义任何成员变量,只有构造函数参数。您仍然必须声明成员变量才能进行检查:

class MyClass {
  a: string

  constructor(a: string) {
    this.a = a // assign to self as an example
  }
}

然而,TS为此提供了一些很好的语法糖。如果您在构造函数参数前放置了publicprivateprotected等访问可见性关键字,则typescript会自动为您分配该关键字,并具有该级别的可见性。所以这就等同于上面的内容,我认为你可能会在这里做。

class MyClass {
  constructor(public a: string) {}
}

答案 1 :(得分:0)

let obj: MyClass = { a: 2 }

您正在为该类提供整数2。

你要做的是

let obj: MyClass = { a: '2' }

另一条评论很好地解释了。