2013-03-22 32 views
1

我相信这是一个愚蠢的问题,答案是,但我原本以为当我为现有框架使用Definitely Typed描述符时,我只会在编码时使用它们进行编译类型安全和智能风格查找。您是否打算使用TypeScript编译描述类型?

https://github.com/borisyankov/DefinitelyTyped/tree/master/knockout(例如)

现在我不是使用Visual Studio,我只是使用的RubyMine,并呼吁在我的Rake构建脚本tsc.exe,但是我只注意到当我将我的源文件被保存类型如KnockoutObservableString,而我通过魔术假设它会替换ko.observable

所以我应该转换所有描述符,并将它们包括在网页上的源代码中?

回答

1

简短的回答,没有。

长答案:你这样做不是需要编译定义文件。如果你看一个,你会注意到它们只包含接口,因此如果你能编译一个,它会导致一个空的JavaScript文件。

定义文件用于向现有的JavaScript库添加键入支持,而无需将库本身转换为TypeScript。

写作打字稿以下行:

var myObservableString: KnockoutObservableString; 

会被编译成

var myObservableString; 

这些类型的一点是,在编译的时候,如果你做了错误,你将会收到通知。例如:

myObservableString = ko.observable("Hello World"); // valid 
myObservableString = ko.observable(false); // error, because you have specified the variable as an observable string 

但是您仍然需要实例化打字稿中观察到的,你不能叫new KnockoutObservableString(string);

在编译的JavaScript你永远也不会得到这些类型的,所以你可能会遇到另一个问题在这里。你指的是编译定义文件的输出吗?