エラーを表すためにtypescriptインターフェイスを定義します。これは次のようなものです:AMDを使用している場合、d.tsファイルのTypescript列挙型を参照する方法は?
enum MessageLevel {
Unknown,
Fatal,
Critical,
Error,
Warning,
Info,
Debug
}
interface IMyMessage {
name: string;
level: MessageLevel;
message: string;
}
これは問題なく動作します。しかし、今は(おそらく)私はそのインターフェイスを.d.tsファイルで宣言して、他の人がそれを入力に使用できるようにしたいと思っています。しかし、単純な型情報ではなく実装であるため、.d.tsファイルに列挙型を定義したくありません。列挙型は、おそらくのは、それを呼びましょう、.TSファイルである必要がありmessageLevel.ts:
///<amd-module name='MessageLevel'/>
export enum MessageLevel {
Unknown,
Fatal,
Critical,
Error,
Warning,
Info,
Debug
}
と私、この時点では、ファイルを入力して、私のd.tsでそれを使用することができますこの方法:
import * as ml from "./MessageLevel";
interface IMyMessage {
name: string;
level: ml.MessageLevel;
message: string;
}
この作業を行うことはできますが、実装ファイルを入力ファイルにインポートする際のレベルミキシングが嫌いです。実際にタイピングファイルに列挙型を実装するというアイデアも嫌いです。
実装と宣言を厳密に分離しておくために、これを行うためのきれいな方法がありますか?
本当にありがとうございます....しかし、私の質問の真のポイントは、仮想列挙型を文字列として、数値として、または型として格納するかどうかではなく、型指定ファイルから列挙型の実装を保持する方法です。 TypeScriptの精神に反して、どんな点でもタイピングファイルをインポートするようです。もしAMDを扱っているのであれば、二重に邪魔になるかもしれません。 –
@StephanGolux上記のサンプルには実際の実装*コードはありません。どちらのサンプルも.d.tsファイルです。 1つの型指定ファイルを参照することは、このシナリオでは非常に一般的で論理的です。つまり、2つのファイルで参照される1つの型( 'enum'、' type'、 'class'など)が必要です。あなたが意図していることを理解しようとすると、これを擬似コードでどのように表示するかの例を教えてください(TypeScriptがそれをコンパイルするかどうかは無視してください)。 – Katana314
@ Katana314。明らかに、私が基本的な概念レベルで欠けているものがあります。私は.tsファイルに列挙型を実装したいと思います。おそらく "export enum MyEnum {...}"を使用して、他の.tsファイルでその実装をインポートすることができます。プロパティを、その列挙型としてタイプされる.d.tsファイル内のインターフェイスの.tsファイルから.d.tsファイルにインポートするのが適切ではないと思います。 –