gpt4 book ai didi

javascript - TypeScript 不强制对函数参数进行类型检查

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:22 27 4
gpt4 key购买 nike

我的印象是 TypeScript 允许您采用有效的 JavaScript 程序并通过使一些关键符号类型安全来“强制”类型。这将通过所有用法传播类型,并使您更新所有符号引用。

这似乎是不正确的。在下面的示例中,makeDiv 函数调用类型化的 make 函数而不检查参数类型。

// strongly typed arguments
function make(tagName: string, className: string) {
alert ("Make: " + className.length);
}

// no typing
function makeDiv(className) {
// calling the typed function without type checking
return make("div", className);
}

makeDiv("test");
makeDiv(6); // bang!

我在这里错过了什么吗?有没有办法强制执行“更严格”的类型检查?或者这是 TypeScript 创作者做出的设计决定?

最佳答案

这是一个设计决定。任何未显式类型化的内容都将隐式类型化为 any 类型。 any所有 类型兼容。

var x:any = 123;
x = "bang";

为了防止将变量隐式类型化为any,从 TypeScript 0.9.1 开始有一个编译器标志 (--noImplicitAny)

如果您使用此选项编译,您的代码将无法编译 除非您这样做:

// You need to explicitly mention when you want something to be of any type. 
function makeDiv(className:any) {
// calling the typed function without type checking
return make("div", className);
}

关于javascript - TypeScript 不强制对函数参数进行类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com