でtypes
ISNを列挙型を好むだろう型、それはconst値です。あなたは別のアプローチをとる必要があります。
一つのアプローチは、列挙型を使用することです:
enum InputType {
Text = 1,
Password = 2
}
let t: InputType = InputType.Text;
しかし、列挙型は、実際には単なる名前の数です。コンパイラによって強制される安全性はありません。例えば、typescriptですコンパイラは、エラーなしで、このようなナンセンスコンパイルう
:
class InputType {
private static Instances = {
Text: new InputType("text"),
Password: new InputType("password")
};
private constructor(private _name:string) {
}
get Name() : string {
return this._name;
}
static get Password() : InputType{
return InputType.Instances.Password;
}
static get Text(): InputType{
return InputType.Instances.Text;
}
}
:厳密値の限られた数を適用するには
let t:InputType = InputType.Text;
t = InputType.Password;
t = 72;
t = Math.PI;
を、あなたは専用のクラスを作成することができます
コンストラクタはプライベートなので、残りのコードはこれらのうちの1つを作成できません。静的ゲッターメソッドを使用して事前定義された値にアクセスする必要があります。あなたが可能な値ですtype
プロパティにあるかを事前に知っていれば
interface IAbstractFormElement {
value: string;
type: InputType;
required?: boolean;
disabled?: boolean;
}
var nameControl = <IAbstractFormElement>{
value: 'Harold',
type: InputType.Text
};
var passwordControl = <IAbstractFormElement>{
value: '[email protected]',
type: InputType.Password
}
ここで何をしようとしているのかよく分かりません。 'type'は2つの値のうちの1つだけであり、これはコンパイラによって強制されるようにしようとしていますか? –
@AndrewShepherdまさに! –
あなたの希望はまだ明確ではありません。それはいつも ''テキスト ''や ''パスワード ''であるのか、あるいは変更できるのでしょうか? –