使用部分类型库
Use partially typed library
我正在尝试使用一个库 (PixiJS),它具有来自“@types/pixi.js”的过时类型定义。如何使用现有类型以及尚未定义的类型?我正在尝试执行以下操作:
import * as PIXI from 'pixi.js'; // use PIXI types (PIXI.Renderer, PIXI.stage, etc)
declare var PIXI.Application: any; // untyped PIXI.Application
在 VSCode 中出现以下错误:
[ts] Import declaration conflicts with local declaration of 'PIXI'
您需要使用 module augmentation:
import * as PIXI from "pixi.js";
declare module "pixi.js" {
class Application {}
}
const app = new PIXI.Application();
我只是将 Application
添加为 class,没有任何方法,因为我真的不知道这个库,但是使用这个方法你可以添加任何你需要的东西。
编辑
这不是实现,请注意 declare
关键字。
您正在添加到现有模块声明,class 只有一个声明,如果您想向其中添加方法,例如您只需添加签名。
例如,如果 class 有一个 echo
方法,那么它将看起来像这样:
declare module "pixi.js" {
class Application {
echo(value: string): string;
}
}
有关详细信息,请查看提供的 link。
我正在尝试使用一个库 (PixiJS),它具有来自“@types/pixi.js”的过时类型定义。如何使用现有类型以及尚未定义的类型?我正在尝试执行以下操作:
import * as PIXI from 'pixi.js'; // use PIXI types (PIXI.Renderer, PIXI.stage, etc)
declare var PIXI.Application: any; // untyped PIXI.Application
在 VSCode 中出现以下错误:
[ts] Import declaration conflicts with local declaration of 'PIXI'
您需要使用 module augmentation:
import * as PIXI from "pixi.js";
declare module "pixi.js" {
class Application {}
}
const app = new PIXI.Application();
我只是将 Application
添加为 class,没有任何方法,因为我真的不知道这个库,但是使用这个方法你可以添加任何你需要的东西。
编辑
这不是实现,请注意 declare
关键字。
您正在添加到现有模块声明,class 只有一个声明,如果您想向其中添加方法,例如您只需添加签名。
例如,如果 class 有一个 echo
方法,那么它将看起来像这样:
declare module "pixi.js" {
class Application {
echo(value: string): string;
}
}
有关详细信息,请查看提供的 link。