是否可以将远程javascript描述为带有.d.ts文件的typescript模块?
我试图将远程javascript描述为带有是否可以将远程javascript描述为带有.d.ts文件的typescript模块?,javascript,typescript,typescript-typings,Javascript,Typescript,Typescript Typings,我试图将远程javascript描述为带有.d.ts文件的typescript模块,但收到一条错误消息 未找到模块:无法解析中的“玩家” “/Users/iepsen/project/src” 这是因为它试图加载本地模块 那么,如何加载远程javascript并让typescript知道它们的方法和参数类型呢 src/types/globals.d.ts declare module 'player' { namespace player { function const
.d.ts
文件的typescript模块,但收到一条错误消息
未找到模块:无法解析中的“玩家”
“/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
}
src/index.tsx
import * as Player from 'player';
Player.play();
由于在构建时,这个
player
模块实际上并不包含在代码中,因此需要声明它并将其用作环境名称空间
有关环境名称空间的说明,请参见中的最后一段
本质上,您需要将.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是什么意思?typedef通常需要位于文件旁边,而远程脚本则不是这种情况,即从http协议加载CDN托管的javascript文件。@Marceliepsen然后您需要指示加载程序将模块说明符
'player'
映射到CDN url。这是一个运行时错误,不是TypeScript错误。@AluanHaddad如何将模块映射到CDN?@MarceloIepsen这取决于您使用的加载程序。例如,在SystemJS中,您可以将其添加到map
下的SystemJS.config
中。请参阅您使用的任何工具(例如SystemJS)的文档。注意:我在某种程度上假设,通过一个“远程”、“CDN托管”文件,您的意思是它独立存在,并声明了一些供您使用的全局javascript变量。您的环境变量和全局变量相结合。它们不一样。