javascript - 是否可以将远程 javascript 描述为带有 .d.ts 文件的 typescript 模块?

标签 javascript typescript typescript-typings

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

Module not found: Can't resolve 'player' in '/Users/iepsen/project/src'.

发生这种情况是因为它试图加载本地模块。

那么如何加载远程 javascript 并让 typescript 知道它们的方法和参数类型?

src/types/globals.d.ts

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

源/索引.tsx

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

最佳答案

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

参见 Typescript's Namespaces documentation 中的最后一段用于他们对环境命名空间的描述。

本质上,您需要将.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();

关于javascript - 是否可以将远程 javascript 描述为带有 .d.ts 文件的 typescript 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287211/

相关文章:

javascript - 如何检查数据是否完整

javascript - Webpack ProvidePlugin 全局变量(找不到模块)

node.js - 在 create-react-app 中包含一个共享项目

继承 T 的 typescript 泛型函数

javascript - 没有获得 Express 的智能感知

typescript - express app.get 函数给出 "Argument types do not match parameters"错误

javascript - JSON 中带有多个 $or 的 JS/Mongo 查询

javascript - 是否可以快速连续地重新加载 iframe?

javascript - 了解 Iframe 中的跨域问题

typescript - 如何从 getStaticProps 返回重定向而不从 TypeScript 出错?