在Typescript中没有检查字符串类型?

时间:2016-10-27 11:33:32

标签: typescript types typescript-typings typescript2.0

有人可以解释为什么以下代码在打字稿中编译,理想情况下如何防止它这样做?

class Foo {}

function bar(f : Foo) {
  console.log(f)
}

bar("lol wat?")

编辑: 这只是一个快速编辑,以解释为什么我遇到这个问题,希望有一些时间保存一些未来的人。 我定义了一个类型

type Message = MySubMessageType | SomeImportedConfigMessageType

允许SomeImportedConfigMessageType是一个空对象,因此我定义的任何一个方法都会占用我的一条消息。保持安全!

1 个答案:

答案 0 :(得分:2)

TypeScript是structurally typed

您声明方法Bar采用类型为Foo的参数。

您的类型Foo除了它是一个对象之外不包含任何约束。

字符串也是对象,因此它们与您的类型Foo兼容。

目前没有非hacky方法可以在TypeScript中进行名义输入,但如果您有兴趣,可以查看github issue