#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"
]
...
}