#typescript #jsdoc
#машинописный текст #jsdoc
Вопрос:
У меня есть types.d.ts
книга, в которой я предоставляю типизацию для конечных пользователей библиотеки. Один из типов выглядит следующим образом:
export type Helpers = { foo(param: ComplexType, param2: ComplexType2): ComplexType amp; SomeIntersectionTypes; bar(param: ComplexType, param2: ComplexType2): ComplexType amp; SomeIntersectionTypes; baz(param: ComplexType, param2: ComplexType2): ComplexType amp; SomeIntersectionTypes; }
Теперь в моем файле JS я хотел бы ссылаться на эти типы с помощью JSDoc, чтобы я получал немного подсказок/предупреждений о типах, если я когда-нибудь их нарушу. Что-то вроде:
/** * @type {typeof import('path/to/types.js').Helpers.foo} */ foo(param, param2) { ... }
Это просто приводит к следующей ошибке в моем редакторе, хотя кажется, что этот синтаксис (в JSDoc) в любом случае совершенно неверен:
[tsserver 8030] [E] The type of a function declaration must match the function's signature.
Необходимость отдельно импортировать типы параметров и формировать возвращаемые типы этих функций кажется глупой. Я просто хотел бы ввести всю функцию с учетом этого существующего определения в .d.ts
файл.
Ответ №1:
Таким образом, правильный способ сделать это, по-видимому, заключается в следующем:
/** * @type {import('path/to/types.js').Helpers['foo']} */ foo(param, param2) { ... }
Я все еще немного не уверен, зачем нам нужен доступ foo
таким образом, как мы это делаем, но тип найден правильно и проверен на использование этого синтаксиса.