代码之家  ›  专栏  ›  技术社区  ›  Marcelo Iepsen

是否可以将远程javascript描述为具有的typescript模块。d、 ts文件?

  •  3
  • Marcelo Iepsen  · 技术社区  · 6 年前

    我试图将远程javascript描述为带有 .d.ts 但我收到一条错误消息

    未找到模块:无法解析中的“player” “/用户/iepsen/项目/src”。

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

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

    src/类型/全局。d、 ts

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

    src/索引。tsx公司

    import * as Player from 'player';
    Player.play();
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   casieber    6 年前

    从这以后 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();