Я переношу проект JavaScript в TypeScript.
Использование модуля узла в TS, такие как URL вызывают некоторые проблемы для меня:Избежать Тип '{}' не может быть присвоен типу 'X'
import nodeUrl = require('url');
// ...
// this worked fine in JS
nodeUrl.format({
// just for demonstration
x: this.getX(someObj),
y: this.getY(someObj)
});
Результатов в:
типа '{}' не присваиваемый типа 'строки'
Это связано с определением этой функции модуля. От @ типов/узла/index.d.ts:
declare module "url" {
export interface Url {
href?: string;
protocol?: string;
auth?: string;
hostname?: string;
port?: string;
host?: string;
pathname?: string;
search?: string;
query?: string | any;
slashes?: boolean;
hash?: string;
path?: string;
}
export function parse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): Url;
export function format(url: Url): string;
export function resolve(from: string, to: string): string;
}
Мой вопрос, как избежать/исправить эту ошибку без изменения файла декларации?
Что вы пытаетесь сделать, чтобы это так 'format' будет принимать произвольные ключи? Я могу ответить на это. –
Я хочу, чтобы компилятор проигнорировал тот факт, что я передаю объект JSON методу 'format', который ожидает объект' Url'. Или способ * конвертировать * мой JSON в объект 'Url' (зависит от того, какой подход чище/проще). – lenny