Могу ли я использовать типы утилит для машинописи с jsdo c? - PullRequest
1 голос
/ 27 марта 2020

Когда я использовал jsdo c в vscode. Я видел, что могу использовать утилиты машинописного текста. Например:

/**
 * Func 1
 * @param {number} x 
 */
function func1(x) {
    return [x, x]
}

/**
 * Func 2
 * @param {ReturnType<func1>} x  // Here !
 */
function func2(x) {
    return x[0];
}

Так что мне интересно, правильно ли это использовать jsod c. И если есть способ создать мои собственные преобразователи типов, например, создать один, чтобы развернуть тип разрешения обещания.

1 Ответ

1 голос
/ 28 марта 2020

Чтобы создать новый преобразователь типа, который разворачивает обещание:

/**
 * @template T
 * @typedef  {T extends Promise<infer Value> ? Value : T} PromiseValue
 */

Или с type-fest :

/**
 * @template T
 * @typedef {import('type-fest').PromiseValue<T>} PromiseValue 
 */
...