Существует внешний пакет npm, который не поддерживает машинописный текст:
const ClassA = class ClassA {
constructor(options) {
this.test = options => this.client(options)
.then(ClassA._validateAddress.bind({
...options,
address: this.address
}))
this.someMethod = options => this.test(options);
ClassA._validateOptions(options);
ClassA._validateAddress(options.address);
this.address = options.address;
this.log = options.log || console;
this.client = otherPackage.defaults({
defaultAddress: this.address,
returns: true
});
}
static _validateOptions(options) {
if (!options) {
throw new Error('test error')
}
if (!isObject(options)) {
throw new Error('options is not an object');
}
function isObject(value) {
const type = typeof value
return value !== null && (type === 'object' || type === 'function')
}
}
}
module.exports = ClassA
Я создаю что-то подобное в моем проекте TypeScript (все еще в JS, будет преобразован в TS):
const ClassA = require('package-without-ts')
const myClient = class ClassB extends ClassA {
constructor(options) {
super(...arguments)
this.customMethod = options => Object.assign(options, {
test: true
})
}
}
const options = {
a: 1,
b: 2
}
const client = new myClient(options);
Как создать определение типа для пакета ClassA, так как я хочу использовать его в своем проекте машинописи, я только начал изучать TS, так что мне немного сложно понять
Я пытался извлечькласс или интерфейсы в стиле TS для .d.ts
файла, но у меня ничего не работает
/// <reference types="node" />
interface IOptions {
address: string,
log: object,
}
declare module 'package-without-ts' {
class ClassA {
public options: object
constructor (options: IOptions) {
}
}
}
Я ожидаю, что мой проект TS будет работать с пакетом, который не поддерживает TS