【发布时间】:2018-06-26 14:46:15
【问题描述】:
我正在开发一个 node.js 项目,由于历史原因,该项目同时涉及 TypeScript 和 JavaScript。我想设置一些可以在两种语言中使用的项目范围的常量。显而易见:编写一个带有常量的.js 文件,以及一个包含TypeScript 使用类型的.d.ts 文件。但是没有:解决这个问题(和 RTFMing)的几个小时让我无处可去。
这是我对常量文件的第一次尝试:
// constants.js
const MY_CONST_1 = 1;
exports.MY_CONST_1 = MY_CONST_1;
... 以及使用它的 JavaScript:
// consumer.js
let constants = require('./constants');
let one = constants.MY_CONST_1;
效果很好,但是当我在 TypeScript 中尝试显而易见的时候:
// consumer.ts
import * as constants from './constants';
let one: number = constants.MY_CONST_1;
不:error TS2307: Cannot find module './constants'. 所以,必须在与constants.js 文件相同的目录中编写一个constants.d.ts 文件,对吧?听起来很容易,但六种不同的尝试已经产生了准确的结果。不管我做什么,Typescript 都会抱怨error TS2306: File '/Users/griscom/Documents/Work/test/constants.d.ts' is not a module。
那么,一个成功的constants.d.ts 文件应该是什么样的?或者,如果我必须在 constants.js 中进行更改才能使这一切正常工作,它们会是什么?
附:这是我的tsconfig.json 文件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": true,
"noImplicitReturns": true
}
}
(这似乎是一个简单而明显的需求;令人沮丧的是这个过程是多么不透明。)
【问题讨论】:
标签: javascript node.js typescript types visual-studio-code