2番目のパラメータをオプションにするには、以下の関数をどのように変更しますか?オプションの分解関数パラメータ
活字体:
function getName(name: string, {
lastName
}: {
lastName: string
}) {
// ...
}
getName('John'); // error
アップデート:私がこれまでに見つけた解決策は、関数本体の中に解体を取ることです
:しかし
function getName(name: string, options: {
lastName: string
} = {} as any) {
const { lastName } = options;
// ...
}
getName('John'); // OK
、私はまだこのコンテキストでそれを動作させる方法を見つけることができません:
関数に解体を移動const getName = Bluebird.coroutine(function* co(name: string,
{
lastName
}: {
lastName: string
}) {
// ...
});
getName('John'); // error
/* -------- DECLARATIONS -------- */
declare namespace Bluebird {
interface CoroutineOptions {
yieldHandler(value: any): any;
}
}
declare class Bluebird<R> {
static coroutine<T, A1, A2>(
generatorFunction: (a1: A1, a2: A2) => IterableIterator<any>,
options?: Bluebird.CoroutineOptions
): (a1: A1, a2: A2) => Bluebird<T>;
}
体はまだエラーを与える:
const getName = Bluebird.coroutine(function* co(name: string, options: {
lastName: string
} = {} as any) {
// ...
});
getName('John'); // error: Expected 2 arguments but got 1.
更新を確認する構文は正しいですか?私はこの例で使用されているように 'function * 'や' coroutine'を認識していません。これは明確に表示できますか? – cnishina