[英]How to get typescript type completion for Pixi 6 native module?
我正在使用本機 ES 模塊構建 PixiJS 游戲,而不使用 Parcel 或 Rollup 等打包器。
我還將 PixiJS 作為本機模塊加載,我在node_modules/pixi.js/dist/esm/pixi.js
中找到了該模塊。 我現在可以使用:
import { Sprite } from './pixi.mjs'
唯一的問題是 VS Code 無法識別隨附的index.d.ts
文件(我在node_modules/pixi.js/index.d.ts
中找到了這個文件),因此 PixiJS 的類型檢查無法正常工作,即使盡管代碼確實運行了!
我的文件夾結構非常簡單。 甚至沒有package.json
。
index.html
js/app.js
js/pixi.mjs
js/pixi.mjs.map
js/index.d.ts
如何強制 VS Code 讀取index.d.ts
文件?
這種方法有幾個問題。
首先,如果你查看node_modules/pixi.js/index.d.ts
中 pixi.js 安裝的類型,你會發現它大部分是空的,它引用了以@pixi
開頭的外部包。 這是由於pixi 項目中的 mono-repo 方法。
如果這些包安裝為npm 模塊(安裝 pixi.js 后自動發生)並且你需要一個package.json
以便 TypeScript 通過它們的名稱 package 找到它們,你將只完成這些引用。
其次,VS Code(或者更確切地說,TypeScript 引擎)一旦將文件pixi.mjs
和index.d.ts
從node_modules
文件夾中移出,就無法關聯它們。 盡管這些類的名稱相同(Sprite、Container 等),TypeScript 無法斷定它們指的是同一事物。
由於node_modules/pixi.js/package.json
中的types
屬性,使用 npm 時此工作流是自動的。 或者,您可以將文件index.d.ts
重命名為pixi.mjs.d.ts
,TypeScript 將通過文件名關聯它們。
這是TypeScript能看懂的文件夾結構:
index.html
js/app.js
js/pixi.mjs
js/pixi.mjs.d.ts
js/pixi.mjs.map
最后,之前的修復只會提供類型推斷,而不會在 js 文件中進行錯誤檢測。 如果想讓 VS Code 報錯,需要創建一個tsconfig.json
文件,設置如下:
{
"compilerOptions": {
"noEmit": true,
"checkJs": true,
},
"include": ["js/*.js"],
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.