0
私は、パラメータの種類がObject.keys()
何のためにあるのかを判断しようとしています、ここでは公式の宣言です(lib.es6.d.ts):活字体の種類が
interface ObjectConstructor {
new(value?: any): Object;
(): any;
(value: any): any;
...
/**
* Returns the names of the enumerable properties and methods of an object.
* @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.
*/
keys(o: any): string[];
}
だから私はそうのような機能を持っている:あなたは上記を参照できるよう
v.registerMap = function (o: NotSureWhatTypeToUse): Promise<Array<any>> {
let keys: Array<string>;
try {
keys = Object.keys(o); // perhaps this will never throw
}
catch (err) {
_suman.log.error('Could not call Object.keys(o), where o is:', util.inspect(o));
throw err;
}
return Promise.all(keys.map(function (k) {
try {
return valuesMap[k] = o.get(k)
}
catch (err) {
return valuesMap[k] = o[k];
}
}));
};
を、私は元のパラメータは、地図またはプレーンオブジェクトである場合に対処しようとしています。
非同期ライブラリでは、同様のタイプのパラメータに対してTypeScriptタイプとしてDictionary<{}>
が使用されます。それは私が探しているものですか?非同期ライブラリで
、このタイプは、次のようになります。
export interface Dictionary<T> { [key: string]: T; }
私が探していますおそらく1。私は混乱しています事は、しかし、ジェネリック医薬品は、非同期ライブラリでどのように働くかある
type PlainObj = {}
v.registerMap = function (o: PlainObj): Promise<Array<any>> {...};
1:
上記のコードからエラーが発生するか、または何らかの方法で正しく機能しないのですか? 'valuesMap'とは何ですか? 'Object.keys'は' null'または 'undefined'のエラーを投げますが、通常はオブジェクト以外の値の空の配列を取得します –
JSの中でもっともトリッキーなことの一つです。エラーかどうか。 Object.keys()が投げるかどうかはわかりません。 –
しかし、質問は何を求めているのですか、私はどのようなタイプの関数に制限するべきか、 'type t = {}'が動作すると思います。 –