值作为接口中的类型

奥莱弗兰克

为什么在Typescript中允许这样做?

interface a {
  age: 42
}

42不是类型。我认为接口永远都不应包含实现细节,而应具有“真实”类型age: number我认为这是枚举的捷径,age: AgeEnum但不是很漂亮。

如果我这样做也会混淆编译器(将42与数字混淆)。如果我做:

class Person implements a { 
  public age: number = 42
}

error: Type number is not assignable to type 42

...我觉得有点困惑!

我也没有在文档中找到此示例。无论如何,都不是直接的例子。

谁能向我解释为什么打字稿中允许这样做?

伊戈尔

接口a声明age限制为value 42在您的实现中,您将field的类型约束重新定义anumber,因此是错误。

打字稿中允许使用,因为您可以限制为原始文字值。这实际上是一件好事。如果你想改变的年龄ageInDecades,你认为那人不会住在过去的100几年中年龄。然后可以age按以下方式定义接口约束

interface IAge {
  ageInDecades: 0|10|20|30|40|50|60|70|80|90|100;
}

这是一个相当微弱的例子,但我认为您明白了。您可以对允许的字符串值执行相同的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章