1

我确信这是一个愚蠢的问题,答案是肯定的,但我最初认为,当我对现有框架使用绝对​​类型化描述符时,我只会在编码时将它们用于编译类型安全和智能感知样式查找。

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

现在我没有使用 Visual Studio,我只是使用 Rubymine 并在我的 rake 构建脚本中调用 tsc.exe,但是我只是注意到,当我转换我的源文件时,它会保留类型,KnockoutObservableString而我假设它会替换它与ko.observable.

那么我是否也应该转换所有描述符并将它们包含在网页上的源代码中?

4

1 回答 1

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 中得到这些类型,所以你可能在这里遇到了另一个问题。您是指编译定义文件的输出吗?

于 2013-03-23T14:42:01.227 回答