簡體   English   中英

本地JS文件的打字稿聲明文件

[英]Typescript Declaration Files for Local JS Files

我正在嘗試在我們正在轉換為Typescript的過程中為我們的Javascript文件添加打字。 但是,我無法識別聲明文件。

這是我的文件結構

  • JS
    • Foo.js
  • 分型
      • index.d.ts
  • index.ts
  • 的package.json
  • tsconfig.json

Foo.js

module.exports = function Foo() {
   return 'Bar';
 };

index.d.ts

export = Foo;

declare function Foo(): string;

index.ts

import Foo = require('./js/Foo')

console.log(Foo());

tsconfig.json

{
  "compilerOptions": {
    "typeRoots": ["./typings"],
    "target": "es5",
    "strict": true,
    "baseUrl": "./",
    "paths": {
      "*": ["typings/*"]
    }
  }
}

的package.json

{
  "name": "fail",
  "version": "1.0.0",
  "description": "",
  "main": "index.ts",
  "scripts": {
    "tsc": "tsc"
  },
  "author": "",
  "license": "MIT",
  "dependencies": {
    "typescript": "^3.1.4"
  }
}

這是repo來重現我的問題

https://github.com/erisman20/typings_help

編輯:這是我得到的錯誤

error TS7016: Could not find a declaration file for module './js/Foo.js'. '....../js/Foo.js' implicitly has an 'any' type.

為相對導入提供聲明的唯一方法,例如'./js/Foo' ,實際上是在導入路徑上有聲明文件(加上.d.ts/index.d.ts ),或者實際上是在基於rootDirs選項的導入路徑。 無論typeRoots也沒有baseUrl / paths進場在這種情況下: baseUrl / paths只會影響模塊的分辨率為“非親屬”路徑, typeRoots可以用來獲得打字稿加載文件,但不影響輸入路徑和文件之間的關系一點都不

最簡單的解決辦法是把一個Foo.d.ts文件在同一目錄Foo.js 如果要將"rootDirs": ["js", "typings"]保存在單獨的目錄中,則可以將"rootDirs": ["js", "typings"] tsconfig.json "rootDirs": ["js", "typings"]tsconfig.json 這個改變足以讓你的例子適合我,雖然我發現有相應的Foo.jsFoo/index.d.ts文件令人困惑,並鼓勵你在使用子目錄時保持一致,即切換到JavaScript端的Foo/index.js或者在TypeScript端切換到Foo.d.ts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM