2016-06-01 4 views
3

TypeScriptでは、別の変数に基づいて暗黙的に型指定された変数を持つために、これを行うことができます。変数に基づいてタイプを宣言する

var json = {foo: 1}; 
var someTypedVariable = json; // Assignment gives implicit type 

someTypedVariable.bar = 1; // Error 
someTypedVariable.foo = 1; // Good 

しかし、割り当てなくても同じ結果が得られる方法はありますか?私は私が行うことができます知っている:

var someTypedVariable: {foo:number}; 

しかし、何のようなものについて:

var json = {foo: 1}; 
var someTypedVariable: json; // Explicitly typing without assignment 

は、これを実現する方法はありますか?

なぜ私はこれをやろうとしていますか? 私はタイプチェックをしたいいくつかの大きなJSON構造を持っています。 tsファイルにサンプルデータをスローするのは簡単です。そのデータを変数に代入すると、その変数の型チェックが行われます。私はJSONのクラス構造を維持したくありません - (JSON構造が変更されたとき)新しいJSONファイルをプロジェクトにコピー/ペーストして、依存するコードが壊れていないかどうかを確認したいだけです。

答えて

5

確かに、方法があります! the related proposal of type queriesがすでに実装されているとおり:注意すべき

var json = {foo: 1}; 
var someTypedVariable : typeof json; // type query, not the string "object" 

someTypedVariable.bar = 1; // Error 
someTypedVariable.foo = 1; // Good 

ことの一つは、型の式のコンテキストでtypeofオペレータはタイプのクエリで、かつシンプルな表現でtypeofと同じことを意味しないということです。

TypeScript playgroundで試すことができます。

+0

素晴らしい作品です! – Eric

関連する問題