Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串未在Typescript中进行类型检查?_Typescript_Types_Typescript Typings_Typescript2.0 - Fatal编程技术网

字符串未在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

有人能解释一下为什么下面的代码是用typescript编译的,以及理想情况下如何防止它这样做吗

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类型化。:)如果向其中添加属性或方法,也会出现错误。:)嗯,弦