字符串未在Typescript中进行类型检查?
有人能解释一下为什么下面的代码是用typescript编译的,以及理想情况下如何防止它这样做吗字符串未在Typescript中进行类型检查?,typescript,types,typescript-typings,typescript2.0,Typescript,Types,Typescript Typings,Typescript2.0,有人能解释一下为什么下面的代码是用typescript编译的,以及理想情况下如何防止它这样做吗 class Foo {} function bar(f : Foo) { console.log(f) } bar("lol wat?") 编辑: 这只是一个简单的编辑,用来解释我为什么会遇到这个问题,希望能为未来的人们节省一些时间。 我定义了一个类型 type Message = MySubMessageType | SomeImportedConfigMessageT
class Foo {}
function bar(f : Foo) {
console.log(f)
}
bar("lol wat?")
编辑:
这只是一个简单的编辑,用来解释我为什么会遇到这个问题,希望能为未来的人们节省一些时间。
我定义了一个类型
type Message = MySubMessageType | SomeImportedConfigMessageType
SomeImportedConfigMessageType
被允许为空对象,因此,我定义的任何获取消息的方法都将获取任何内容。TypeScript是空的
您可以声明方法Bar
,以获取类型为Foo
的参数
您的类型Foo
不包含任何约束,除非它是一个对象
字符串也是对象,因此它们与您的类型Foo
兼容
目前还没有一种非黑客的方法可以在TypeScript中获得名义上的键入,但是如果您感兴趣,您可能会想查看这一点。他们是。。只是您的Foo类实际上是一个空对象,可以通过任何方式进行duck类型化。:)如果向其中添加属性或方法,也会出现错误。:)嗯,弦