tsconfig.json 中的AssemblyScript 库文件

问题描述 投票:0回答:1

使用 AssemblyScript 在服务器端编译和运行不受信任的代码,我添加了一些附加库来扩展 AssemblyScript 提供的标准库。这些主机函数绑定在文件

env.ts
中定义,我在编译期间使用
--lib
标志包含了该文件:

asc ./assembly/index.ts --lib ./lib/env.ts

现在我想配置一个项目,使用

asinit
创建:

npx asinit .

以便 VSCode 和其他 Typescript 友好的 IDE 识别

env.ts
文件中的类型。我目前拥有的:

./程序集/index.ts

// The i32 AssemblyScript type is found and handled by VSCode
export function add(a: i32, b: i32): i32 {
  // Room is defined in env.ts. VSCode says: Cannot find name 'Room'. ts(2304)
  Room.describe("Test"); 
  return a + b;
}

除了

asinit
创建的文件之外,我还添加了:

./lib/env.ts
File containing exported host functions and namespaces.

./lib/types/index.d.ts
Type declarations generated from env.ts using tsc --declaration

./lib/types/package.json
Contains: {"types": "index.d.ts"}

是否可以配置

./assembly/tsconfig.json
文件,以便 VSCode 将
./lib/env/types/index.d.ts
中定义的类型作为内置库的一部分包含在内,而不必在
import
中使用
index.ts

./ assembly/tsconfig.json

{
  "extends": "assemblyscript/std/assembly.json",
  "include": [
    "./**/*.ts"
  ]
}
typescript tsconfig built-in assemblyscript
1个回答
0
投票

为了将类型添加到全局范围,文件

./lib/types/index.d.ts
必须仅包含环境类型声明,而不能包含
export
import
语句。

tsc --declaration
标志可能会生成带有export/
import
语句的
.d.ts
文件,因此请确保所有声明都是环境声明,没有导出/导入。

不好

export declare namespace Room {
    /* ... */
}

declare namespace Room {
    /* ... */
}

然后,将包含类型声明文件的所有路径添加到

tsconfig.json
文件中(
typeRoots
包含文件夹,或
types
添加特定类型文件):

./ assembly/tsconfig.json

{
  "compilerOptions": {
    "typeRoots": [
      "../node_modules/assemblyscript/std/types",
      "../lib/types"
    ],
  },
  "include": [
    "./**/*.ts",
  ],
}
© www.soinside.com 2019 - 2024. All rights reserved.