2016-10-08 3 views
0

以下に、TypeScriptには非常に簡単な例があります。 「テスト」セクションの2番目の表現が有効である理由を説明してください(それ以外のものは期待通りではありません)。String.replace()メソッドの2番目のパラメータの型チェックに一貫性がありませんか?

let p = '{pattern}'; 
let a = 'bar ' + p + ' foo'; 
let h: { key: string } = { key: a}; 
let k = 'key'; 
let n = 0; 

// tests 
a.replace(p, n); 
h[k].replace(p, n); 
h.key.replace(p, n); 
h['key'].replace(p, n); 

私の最高の推測では、それが何らかの形でそれに関連するハッシュ/または仕事に関連していることですが、私はいくつかの知識が不足している。..

答えて

1

第二テスト:

h[k].replace(p, n); 

は罰金ですコンパイラはh[k]anyなので、インデックスを使用してプロパティにアクセスしているためです。
あなたはそれはあなたがする必要があるのコンパイルに失敗する場合:

let h: { [key: string]: string } = { key: a }; 
h[k].replace(p, n); // Error: Argument of type 'string' is not assignable to parameter of type 'RegExp' 

code in playground`

+0

いやを、thatsのは意味をなさない。おかげで@ nitzan-tomer – ZuBB

関連する問題