我的印象是,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创建者做出的设计决策?
发布于 2013-08-19 04:23:58
这是一个设计决策。任何未显式类型的内容都会变成隐式类型,成为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);
}https://stackoverflow.com/questions/18306108
复制相似问题