1

根据https://developer.mozilla.org/en-US/docs/Web/API/FileReader

interface FileReader extends MSBaseReader {
    error: DOMError;
    readAsArrayBuffer(blob: Blob): void;
    readAsDataURL(blob: Blob): void;
    readAsText(blob: Blob, encoding?: string): void;
}
declare var FileReader: {
    prototype: FileReader;
    new (): FileReader;
}

这个来自 lib.d.ts 的变量也应该有 DONE,LOADING,EMPTY 。我该如何扩展它,并且 lib.d.ts 是否有一个可以提交此类更改的公共场所?

4

2 回答 2

4

要在将新属性添加到 lib.d.ts 之前访问它们,您可以扩展声明。可以这样做是因为 TypeScript 中的接口是开放的。

因此,添加一个名为 libextensions.ts 的 TypeScript 文件并添加以下内容:

interface FileReader {
    EMPTY: number;
    LOADING: number;
    DONE: number;
}

您只需将缺少的位放在这里 - 它们将被添加到 lib.d.ts 接口中。

您可以使用此技术来保持最新的工作草稿,并且编译器将通过发出重复声明错误来告诉您何时 lib.d.ts 已更新。

如果您有 FileReader 的实例,则不需要通过FileReader.prototype.DONE可以在实例上使用常量来访问常量 - 例如:

var fileReader = new FileReader();
var example = fileReader.DONE;
于 2013-10-18T07:37:58.263 回答
0

你应该在这里打开一个错误报告:http ://typescript.codeplex.com/workitem/list/basic 打字稿团队管理lib.d.ts

于 2013-10-17T22:32:28.410 回答