を.MAPタイプIは、次のコード持っている:typescriptですランタイム配列は、使用可能な方法
value.items.map
にエラーを投げている
if (Array.isArray(value.items)) {
return Array.prototype.concat.apply(items, value.items.map(function(item, key) {
return traverseCallback(item, path.concat(['items', key]), resolve);
}));
}
を。エラーは次のとおりです。
Property 'map' does not exist on type 'IObjectSchema | IObjectSchema[]'.
事がある - 私はどちらかIObjectSchema
要素またはそのような要素の配列を扱います。私がArray.isArray...
に入ると、私は配列を持っていることを100%確信しているので、配列上で.map
の機能を利用できます。これは明らかなJSです。
しかし、TypeScriptは.map
が利用可能であるとは確信していません。おそらくArray.isArray...
が1レベル上がると認識しません。
質問は、変数を型付き要素または型付き要素配列のように使用し、配列の場合は.mapを使用できるようにするにはどうすればよいですか?私のコードはJS正しいと確信していますが、TSはここでエラーを投げます。
を(value.items instanceofはアレイ)場合、私は '第二のアプローチを使用{ 'それはまだ同じエラーを返す、なぜなら – ducin
ああ。点線のプロパティで型ガードを使用することは[typescript 2.0からのみサポートされています](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#dotted-names-in-typeguards)。私が提供した 'isObjectSchemaArray'アプローチを試してみてください –