将 JS Web 程序集导入 TypeScript

Zen*_* Qu 1 javascript import typescript webassembly

我正在尝试在我的 TypeScript React 项目中使用wasm-clingo。我尝试d.ts为该项目编写自己的文件:

// wasm-clingo.d.ts
declare module 'wasm-clingo' {
  export const Module: any;
}
Run Code Online (Sandbox Code Playgroud)

并像这样导入:

import { Module } from 'wasm-clingo';
Run Code Online (Sandbox Code Playgroud)

但当我console.log(Module)undefined. 我做错了什么?

笔记:

解决方案:

我这样解决了这个问题:

// wasm-clingo.d.ts
declare module 'wasm-clingo' {
  const Clingo: (Module: any) => Promise<any>;
  namespace Clingo {}
  export = Clingo;
}
Run Code Online (Sandbox Code Playgroud)

import * as Clingo from 'wasm-clingo';
Run Code Online (Sandbox Code Playgroud)

这是这个解决方案的来源

see*_*per 5

我知道您找到了您可以接受的解决方案;但是,这里实际上没有任何类型,您只是Module声明为any,这根本没有给您带来打字稿的好处。在类似的情况下,我使用了@types/emscripten,它为使用 emscripten 编译的 Web 程序集模块提供了完整的类型定义。您只需要做:

npm install --save-dev @types/emscripten

然后更改您的tsconfig.json types数组以添加 的条目emscripten。之后你就可以写Module.ccall(...)等等。如果你愿意,你当然可以写const Clingo = Module然后调用它,如果你想要一个更具描述性的名字Module(这是一个可怕的名字!)。

不客气 ;)