JavaScriptプロジェクトをTypeScriptに移行しています。タイプ '{}' 'ストリング'タイプを避けてください '{}'をタイプ 'X'に割り当てることはできません
を入力する割り当て可能でない:で
import nodeUrl = require('url'); // ... // this worked fine in JS nodeUrl.format({ // just for demonstration x: this.getX(someObj), y: this.getY(someObj) });
結果:例えばURLとしてTSのノードモジュールは、私のためにいくつかの問題を引き起こしている使用
これは、そのモジュール機能の定義によるものです。 タイプ/ノード/ 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; }
私の質問はどのようにこのエラーが宣言ファイルを変更することなく、修正/回避しないのですか?これについての詳細情報はModule Augmentationで見つけることができます
import nodeUrl = require('url'); declare module "url" { export function format(url: Url): string; export function format(x: any, y: any): string; export function format(url: any): string; }
:
あなたがする何をしようとしているが、それはとても 'format'は、任意のキーを受け入れるだろう作りますか?私はこれに答えることができるかもしれません。 –
私はJSONオブジェクトを 'Url'オブジェクトを期待する' format'メソッドに渡すという事実をコンパイラが無視するようにしたいと思います。または、私のJSONを 'Url'オブジェクトに変換する方法(どのアプローチがより洗練されているかによります)。 – lenny