2017-10-06 16 views
1

私はタイスクリプトを学んでおり、それについては非常に新しいです。現時点では、私は少し早く理解できるように、いくつかのプロジェクトのコードを読もうとしています。オプションとは何ですか?typescriptの[x:string]は何ですか?

私はこれが非常に基本的なコンセプトだと確信しています。私はC#開発者ですから、私はいつも何らかのC#の方法でコードを理解しようとしています。

export type NLC = string; ---so NLC type is string 
export type CRS = string; ---so CRS type is string 

export class Location { 

    constructor(
    public readonly nlc: NLC, ----we have a property nlc with type NLC (basically string) 
    public readonly crs: Option<CRS>, ---what is Option, is it an optional property? 
    public readonly clusters: ClusterMap, -- property with type ClusterMap 
    public readonly allStations: NLC[] 
) { } 

} 

**////can someone tell me what property this ClusterMap has?** 
export type ClusterMap = { 
    [nlc: string]: NLC; -- what is [nlc: string]? 
} 

多くのおかげ

答えて

1

オプション

あなたはオプションの定義に移動した場合、あなたはそれのための定義を見つけることができます。

指定されたタイプのすべてのプロパティをオプションにするマップされたタイプかもしれません。

type Optional <T> = { [P in keyof T]?: T[P]; } 

そうであれば、上記のコードは、指定された型Tにすべてのプロパティのためにそれを何、それは、オプションのプロパティにする?注釈を追加します。

あなたがその上の定義に移動すると、別のものになる可能性があります。 Clustermapは、キー(nlc)が文字列である辞書のようなものですClusterMap

interface Option<T> { 
    myProp: string; 
    obj: T 
} 

...それは単純な汎用インタフェースかもしれない - だから、あなたは何か他のものを説明することを必要とするなら、私に知らせて値はNLCです。

例:

const someNlcObject = ''; 

const cm: ClusterMap = { 
    'someKey': someNlcObject, 
    'anotherKey': someNlcObject 
}; 

cm['myKeyHere'] = someNlcObject; 
cm.anyKeyYouLike = someNlcObject; 

const example = cm.someKey; 

const example2 = cm['myKeyHere'];