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

时间:2013-08-19 03:44:03

标签: javascript typescript

我的印象是,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创作者做出的设计决定吗?

1 个答案:

答案 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);
}