VSCode предоставляет intellisense для Foo. js через соответствующий Foo.d.ts только тогда, когда он куда-то импортирован; как включить intellisense в самом Foo. js? - PullRequest
7 голосов
/ 03 августа 2020

Настройка представляет собой «Create React App» со следующей jsconfig.json:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "baseUrl": "src"
  },
  "include": ["src"]
}

Структура каталогов:

.
└── src
    └── Components
        └── Foo
            ├── Bar
            │   ├── Bar.js
            │   ├── Bar.d.ts
            │   └── index.js
            ├── Foo.js
            └── index.js
// React component `Foo` imports a component `Bar`:

import { Bar } from './Bar'

export function Foo(props) {
  //
}
// And gets full intellisense via `Bar.d.ts`:

type Props = {
  /** ... */
}

export declare function Bar(
  props: Props
): React.FunctionComponent

Но Bar.js сам по себе не получает intellisense из собственного файла Bar.d.ts, есть ли способ исправить это? Я пробовал использовать директиву triple-sla sh (/// <reference path="Bar.d.ts"/>), но это не помогло. Некоторый JSDo c помог, но довольно бессмысленно иметь специальный файл декларации и при этом использовать JSDoc; он также, вероятно, работает только с VSCode, что нежелательно:

export function Bar(
  // When `type Props` is exported from the `.d.ts`:
  /** @type {import("./Bar").Props} */ props
) {

Ответы [ 2 ]

1 голос
/ 04 сентября 2020

По состоянию на сентябрь 2020 года это предназначено ( исходный код ):

[...] нет поддерживаемого сценария для ".d.ts является сопроводительным файлом к. js ". Здесь рекомендуется использовать JS Do c для написания аннотаций вашего типа.

Следите за разработкой TypeScript, чтобы узнать, изменится ли он в будущем.

0 голосов
/ 11 августа 2020

Вы можете использовать JSDo c для определения классов, функций и всего остального, как в машинописном тексте.

Одно из лучших применений, которые я сделал, было в файле connect. js файл на Github . Я не хотел фиксировать файл, содержащий учетные данные БД. Итак, я определил класс enum, et c. в JSDo c.

...