代码之家  ›  专栏  ›  技术社区  ›  Zak

如何重写或向第三方包的类型接口添加新类型?

  •  0
  • Zak  · 技术社区  · 3 年前

    我使用的是第三方软件包,它的类型很完美,一切都很好。但由于我的项目的要求,我不得不扩展包中所示的类型。

    假设有一个 interface 包中名为Data的数据,如下所示:

    export interface Data {
        id: number;
        name: string;
        address: string;
    }
    

    现在我需要添加一个新类型,称为 description 在上面的界面中,如下所示:

    export interface Data {
        id: number;
        name: string;
        address: string;
        description: string;
    }
    

    出于显而易见的原因,直接更新中的接口是不对的 node_modules 文件夹

    有没有办法向第三方包中已经存在的接口添加新类型?

    0 回复  |  直到 3 年前
        1
  •  0
  •   Mohammad Jawad Barati    2 年前

    很简单:

    步骤1

    只需创建一个名为 global.d.ts 在项目的根目录中。然后只需导入您想要添加更多类型到其接口的第三方库。我在这里用一个实际的例子:

    import 'keycloak-js';
    
    declare module 'keycloak-js' {
        interface KeycloakTokenParsed {
            'jti': 'f5be5c72-8578-40d9-bc81-53141734591a';
            'typ': 'Bearer';
            'allowed-origins': string[];
            'scope': 'openid profile email';
            'sid': 'e73754b9-2219-46f5-a7b2-8c7d5525c39e';
            'email_verified': boolean;
            'name': string;
            'preferred_username': string;
            'given_name': string;
            'family_name': string;
            'email': string;
        }
    }
    

    **只是为了我自己 'f5be5c72-8578-40d9-bc81-53141734591a' 而不是字符串。所以请不要介意我,如果你喜欢的话就用绳子吧。顺便说一句,我也可以使用JSDoc string

    第二步

    给你 enter image description here

    Github回购

    https://github.com/kasir-barati/you-say