файл typescript .d.ts не распознается typescript, но vsc

#node.js #typescript #types #definition

#node.js #typescript #типы #определение

Вопрос:

Обновить:

это не typescript, а «проблема» с ts-узлом

я ответил себе, поэтому, если вас все еще интересует «проблема» — читайте дальше 🙂

извините за путаницу


возможно, у меня СОВЕРШЕННО неправильное представление о файле index.d.ts.. но моя идея заключалась в том, что я могу объявлять типы внутри него, и затем они «определяются глобально», поэтому мне не нужно повторно объявлять их везде, где я их использую (файл a.ts и b.ts)

структура:

 root
  src
    a.ts
    b.ts
  node_modules
  tsconfig.json
  index.d.ts
  package.json
  

например, у меня есть файл index.d.ts:

 type XYZType = { test: string }
  

в моем файле ./src / a.ts у меня есть:

 const x: XYZType = { test: 'hello' }
console.log(x)
  

в моем файле ./src / b.ts у меня есть:

 const x: XYZType = { test: 'world' }
console.log(x)
  

однако vsc (Visual Studio Code) не жалуется на отсутствие типа XYZType .. но когда я пытаюсь разрешить компиляцию typescript, это происходит…:

 error TS2304: Cannot find name 'XYZType'.
  

и указывает на файл a.ts и b.ts

итак .. чтобы быть очевидным.. похоже, я делаю что-то не так..

я последовал небольшому примеру из ссылки levelup

итак, мой tsconfig.json выглядит так

 {
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "target": "es6",
    "noImplicitAny": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "baseUrl": ".",
    "paths": {
      "*": ["node_modules/*", "src/types/*"]
    }
  },
  "include": ["src/**/*"]
}
  

я использую:

     "ts-node": "^9.0.0",
    "typescript": "^4.0.3"
  

я нашел много запросов на переполнение стека с тем же названием.. но совершенно другой контент (собственные объявления пакетов?) вот почему это меня смущает, и у меня такое чувство, что я совершенно не прав в том подходе, который я ищу

надеюсь, кто-нибудь может помочь и объяснить, что не так :/

заранее спасибо 🙂

Ответ №1:

хорошо, вау — это не typescript, а проблема с ts-узлом

в приведенной в примере ссылке сценарий package.json «dev» настроен следующим образом

 "scripts": { 
  "dev": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/index.ts", 
} 
  

но должен быть:

 "scripts": { 
  "dev": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' --files src/index.ts", 
} 
  

(необходимо добавить ‘—files‘)

извините за путаницу, но, надеюсь, это поможет кому-то, кто работает с той же проблемой 🙂

Комментарии:

1. Спасибо, я везде искал ответ, но не мог понять, почему, пока не увидел это