使用部分类型库

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。