我的印象是,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创作者做出的设计决定吗?
答案 0 :(得分:3)
这是一个设计决定。任何未明确键入的内容都会隐式输入为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);
}