最近TypeScriptを発見し、既存のJavaScriptコードをTypeScriptに変換しようとしています。
文字列(data
)から情報を取得し、それをJSONオブジェクト(json
)に入れて返す関数があります。しかし、TypeScriptを使用し、戻り値の型を指定しない場合、Eclipseで次のエラーが発生します。
戻り式の中に最も一般的なタイプは存在しません
any
の戻り値の型を追加すると消えますが、これは適切な解決策ではないと思います(一般的すぎます)。そして、「json」または「object」タイプが見つかりませんでした。
私の質問は:どの戻り値の型を使用する必要がありますか?
関数は次のとおりです。
function formaterDonnees(data: string) { // or (data: string): any
// final json object
var json = {
y: {
"vars": [],
"smps": [],
"data": []
}
};
// ...
// processing data...
// ...
// put new variables in JSON (not real values below)
json.y.data = ["data"];
json.y.smps = ["smps"];
json.y.vars = ["vars"];
return json;
};
object
( TypeScript 2.2の新機能 )を返すように指定することはできますが、戻り値の型を作成することはできます。
type MyReturnTypeItem = {
vars: string[];
smps: string[];
data: string[];
}
type MyReturnType = {
[name: string]: MyReturnTypeItem;
}
function formaterDonnees(data: string): MyReturnType {
var json = {
y: {
"vars": [],
"smps": [],
"data": []
}
};
// put new variables in JSON (not real values below)
json.y.data = ["data"];
json.y.smps = ["smps"];
json.y.vars = ["vars"];
return json;
};
( 遊び場のコード )
また、 type alias を使用している間、 interfaces :でも同じことができます。
interface MyReturnTypeItem {
vars: string[];
smps: string[];
data: string[];
}
interface MyReturnType {
[name: string]: MyReturnTypeItem;
}