5

私は2つのtypescriptファイルを持っています。

commons.d.ts

module "commons" {
    interface IUser {
        name:string;
    }
}

main.ts

import commons = module("commons");
class User implements commons.IUser {
    name:string;
}

commons.Userでよく使うのでmain.tsエイリアスを作りたいと思います。コードを次のように変更します。

import commons = module("commons");

import UserAlias = commons.IUser;

class User implements UserAlias {
    name:string;
}

ただし、コンパイル時にエラーがスローされます。

E:\WORKSPACE\app\typescripts>tsc main.ts
E:/WORKSPACE/app/typescripts/main.ts(3,27): The property 'IUser'
    does not exist on value of type 'commons'
E:/WORKSPACE/app/typescripts/main.ts(3,19): A module cannot be aliased
    to a non-module type

修正方法は?

4

1 に答える 1

8

インターフェイスのエイリアスを作成するには、ローカル インターフェイスでエイリアスを拡張します。

私はこれをテストしました:

commons.ts

export interface IUser {
    name: string;
}

app.ts

import commons = module("commons");

interface userAlias extends commons.IUser {
}

class User implements userAlias {
    name: string;
}

commons.ts を少し変更しました。これは、External Modules を使用する場合、通常、module内部に宣言がないためです。ファイルはモジュールです。宣言はmodule内部モジュールに使用されます。

詳細については、TypeScript 言語仕様のセクション 9.4 を参照してください。

于 2013-01-26T12:56:00.580 に答える