2017-08-14 4 views
3

typescriptですの反復界面特性

interface Activity { 
     id: string, 
     title: string, 
     body: string, 
     json: Object 
    } 

私は現在の操作を行います。

headers: Array<Object> = [ 
      { text: 'id', value: 'id' }, 
      { text: 'title', value: 'title' }, 
      { text: 'body', value: 'body' }, 
      { text: 'json', value: 'json' } 
     ] 

これは非常に反復取得します。私が希望することは、このようなものです:

headers: Array<Object> = Activity.keys.map(key => { 
     return { text: key, value: key } 
    }) 

答えて

1

JavaScriptをサポートしていないので、あなたは、インターフェイスは、唯一のコンパイル時のためのものであることはできません。あなたは次のことを行うことができますインターフェイスの能力を維持したい場合は、@Nitzan Tomerが正しい

const Activity = { 
    id: "", 
    title: "", 
    body: "", 
    json: {} 
} 

type Activity = typeof Activity; 
const headers: Array<Object> = Object.keys(Activity).map(key => { 
    return { text: key, value: key } 
}); 

code in playground

0

:あなたは何ができるか

のようなものです。インタフェースは型システムの一部であるため、翻訳されたコードでは省略されているため、コンパイル時にのみ関連します。

class Activity { 
    public id: string = ''; 
    public title: string = ''; 
    public body: string = '' ; 
    public json: Object = {}; 
} 

let activity = new Activity() 

const headers: Array<Object> = Object.keys(Activity).map(key => { 
    return { text: key, value: key } 
}); 

console.log(JSON.stringify(headers)) 
関連する問題