首页 > 解决方案 > 从声明文件中创建类自动间返回类型

问题描述

我们正在使用一个没有类型的外部包,重新创建它是太多的大修。我们确实通过反复试验知道 ie (generateWallet) 的响应,并希望为它们做出声明而不是实现每一个。

我们目前要做的

申报文件

interface ServiceClass {
    generateWallet(): Wallet;
}
interface Wallet {
    address: string;
    privateKey: string;
}

班级

export class Service implements ServiceClass {
    constructor() {}
    generateWallet(): Wallet {
        return externalPackage.generateWallet() // returns any;
    }
    // We dont want to do this for about hundred different functions
}

想要的输出

import externalPackage from 'external-package';
const externalPackage.generateWallet(); // Shows return type as (Wallet)

标签: node.jstypescript

解决方案


您可以为没有自己的类型的包添加自己的类型描述文件。创建package_name.d.ts具有所需类型的文件,如下所示:

/* eslint-disable camelcase */
declare module 'external-package' {
    export interface Wallet {
      address: string;
      privateKey: string;
    }

    interface ExternalPackage {
       generateWallet(): Wallet;
    }
    export default ExternalPackage;
}

将此文件放入@types文件夹并将此文件夹添加到 tsconfig.json:

{
  "compilerOptions": {
    ... // other options
    "typeRoots": [
      "@types",
      "node_modules/@types"
    ]
...
}

推荐阅读