可以将远程javascript描述为带有.d.ts文件的打字稿模块吗?

时间:2018-01-16 17:55:59

标签: javascript typescript typescript-typings

我试图将远程javascript描述为带有.d.ts文件的打字稿模块,但我收到了错误消息

  

找不到模块:无法解析播放器'在   ' /用户/ iepsen /项目/ SRC'

这是因为它试图加载本地模块。

那么如何加载远程javascript并让打字稿知道他们的方法和参数类型?

的src /类型/ globals.d.ts

declare module 'player' {
    namespace player {
        function constructor(param1: string, param2: string): void
        function play(): void
    }
    export = player
}

的src / index.tsx

import * as Player from 'player';
Player.play();

1 个答案:

答案 0 :(得分:0)

由于此player模块在​​构建时不是代码中实际包含的内容,因此您需要声明它并将其用作环境命名空间。

请参阅Typescript's Namespaces documentation中的最后一段,了解它们对Ambient Namespaces的描述。

实质上,您需要将.d.ts文件修改为:

declare namespace Player {
    export interface Base {
        function constructor(param1: string, param2: string): void;
        function play(): void;
    }
}

declare var Player: Player.Base;

然后在index.tsx

// No need for import, as it's an ambient module
Player.play();