很多关于声明文件的混淆

时间:2017-06-06 18:02:11

标签: javascript typescript

Typescript不支持许多WebGL 2函数和接口,如createVertexArray()。因此,我想编写一个包装函数的声明文件,以便编译器不会抛出拟合。为此,我编写了一个包含不支持的函数的javascript文件:

function createVertexArray(glContext) {
    return glContext.createVertexArray();
}
// a bunch more 

我现在需要为这些函数创建一个Typescript声明文件。据我了解,当你要求typescript加载模块时,它会查看index.d.ts文件的目录。在那里你必须定义你的javascript文件中使用的函数和接口。这就是我到目前为止所做的:

declare module Webgl2 {
    export interface WebGLVertexArrayObject {}
    export function createVertexArray(glContext: WebGLRenderingContext):WebGLVertexArrayObject;
    export function deleteVertexArray(glContext: WebGLRenderingContext, vertexArray: WebGLVertexArrayObject):void;
    export function isVertexArray(glContext: WebGLRenderingContext, vertexArray: WebGLVertexArrayObject):boolean;
    export function bindVertexArray(glContext: WebGLRenderingContext, vertexArray: WebGLVertexArrayObject):void;
}

export = Webgl2;

但是,我需要以下方面的帮助:

  1. 如何在我的打字稿应用程序的其余部分加载模块?
  2. 是否自动加载了javascript文件,或者在提供页面时是否必须手动执行此操作?
  3. 在我的javascript文件中,我是否必须将这些函数声明为模块导出?
  4. 在我的javascript文件中,我是否必须声明createVertexArray()返回的接口?
  5. 我已将这两个文件放在pastebin here上。

1 个答案:

答案 0 :(得分:0)

有人已经做了一段时间了。您可以找到WebGL2.d.ts文件here

然后,您可以使用"files"文件中的tsconfig.json字段导入,如图所示here

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": true,
        "strictNullChecks": false,
        "types": [],
        "forceConsistentCasingInFileNames": true,
        "lib": ["ES2015", "ES2017.SharedMemory", "DOM"]
    },
    "files": [
        "Misc.d.ts",
        "WebGL2.d.ts"
    ]
}