我确信这是一个愚蠢的问题,答案是是,但我原本以为当我在现有框架中使用Definitely Typed描述符时,我只会将它们用于编译类型安全和编码时的智能感知查找。
https://github.com/borisyankov/DefinitelyTyped/tree/master/knockout(例如)
现在我没有使用Visual Studio,我只是使用Rubymine并在我的rake构建脚本中调用tsc.exe,但是我只是注意到当我转换源文件时它会保留类型KnockoutObservableString
而我假设它会用ko.observable
取代它。
那么我是否应该转换所有描述符并将其包含在网页上的源代码中?
答案 0 :(得分:1)
简短回答,不。
答案很长:你不需要编译定义文件。如果你看一个,你会发现它们只包含接口,因此你应该能够编译一个接口,这会产生一个空的JavaScript文件。
定义文件用于为现有JavaScript库添加打字支持,而无需将库本身转换为TypeScript。
在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
但是你仍然需要在TypeScript中实例化observable,你不能调用new KnockoutObservableString(string);
你永远不应该在编译的JavaScript中获得这些类型,所以你可能在这里遇到另一个问题。你指的是编译定义文件的输出吗?