2017-08-10 13 views
2

の労働組合として `interface`キーを広げることが可能interfaceの鍵の一つであることを関数の引数をです。TypeCheckすることです:活字体が文字列

export interface IUser { 
    id: string; 
    email: string; 
    password: string; 
} 

const updateUserProperty = (property: 'id' | 'email' | 'password') => e => 
    this.setState({ [property]: e.target.value }); 

私は'id' | 'email' | 'password'がハードコードされていないたいと思います。

JSの例では、 IUser対象である、私はObject.keys(IUser).join(' | ')

答えて

2

にそれを翻訳することができますはい、次のことができます。

export interface IUser { 
    id: string; 
    email: string; 
    password: string; 
} 

const updateUserProperty = (property: keyof IUser) => e => 
    this.setState({ [property]: e.target.value }); 

updateUserProperty("sdsd"); //Error 
updateUserProperty("id"); //Ok 

詳細情報here

+0

パーフェクト。以来利用可能:TypeScript 2.1 – dmnsgn