Создание класса auto inter возвращаемых типов из файла объявления

#node.js #typescript

#node.js #typescript

Вопрос:

Мы используем внешний пакет, у которого нет типов, его воссоздание требует слишком большого пересмотра. Мы знаем методом проб и ошибок ответ i.e (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)
 

Ответ №1:

Вы можете добавить свой собственный файл описания типа для пакета, который не имеет собственных типов. Создайте 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"
    ]
...
}