我很难输入打字稿来识别本地es6模块的形状:
convert-time.js
export const minutes = sec => sec * 60
export const hours = sec => minutes(sec) * 60
export const days = sec => hours(sec) * 24
export const weeks = sec => days(sec) * 24
export const years = sec => days(sec) * 365
注意:我想弄清楚如何在不更改convert-time.js
为打字稿文件的情况下使它起作用。
这是我要导入的文件:
索引
/// <reference path="../typings/convert-time.d.ts" />
import { minutes, days } from '../test/helpers/convert-time'
这是我创建的类型定义文件:
convert-time.d.ts:
declare module "convert-time" {
export function minutes(sec: number): number;
export function hours(sec: number): number;
export function days(sec: number): number;
export function weeks(sec: number): number;
export function years(sec: number): number;
}
这是我的tsconfig:
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"jsx": "react"
},
"files": [
"typings/index.d.ts",
"typings/convert-time.d.ts"
],
"exclude": [
"node_modules"
]
}
尝试的步骤:
error TS2307: Cannot find module
。大多数问题都与具有类型定义的外部模块有关。我找不到本地模块的示例。typings/convert-time.d.ts
到中的files
部分tsconfig.json
。/// <reference path='../../typings/convert-time.d.ts' />
到index.ts
以上都不起作用!我必须学习什么黑魔法才能使它起作用?谢谢!
关于ES6
由于您尝试与ES6模块进行互操作,因此您要么
a)更改tsconfig.json
为目标ES6并发出ES6模块,如下所示:
{
...
"target": "es6",
"module": "es6",
...
}
但是我认为您还不能在NodeJS中使用ES6模块。
要么:
B)设打字稿transpile的ES6的JavaScript模块向下到ES5通过启用JavaScript处理您的tsconfig.json
下compilerOptions
-如下面,并确保该.js文件包含/不排除:
{
...
"target": "es5",
"module": "commonjs",
"allowJs": true,
...
}
关于类型声明
在我的博客上阅读有关TypeScript如何发现类型/类型声明以及希望在此处看到的内容的信息:https : //ivanz.com/2016/06/07/how-does-typescript-discover-type-declarations-definitions- javascript
看来此JavaScript文件是您自己的代码(不是NPM模块),因此:
/// <reference path="../typings/convert-time.d.ts" />
,只要该文件不排除或纳入tsconfig.json
convert-time.d.ts
与以下目录位于同一目录中convert-time.js
declare module "convert-time" {
位。这是因为通过在.js旁边放置.d.ts,它是一个“外部”模块,而不是“环境”模块(请参见我的博客)(declare
例如,如果您正在创建的代码类型属于您自己的代码,则需要使用此代码)对于NPM软件包)基本上:
../test/helpers/convert-time.js:
export const minutes = sec => sec * 60
export const hours = sec => minutes(sec) * 60
export const days = sec => hours(sec) * 24
export const weeks = sec => days(sec) * 24
export const years = sec => days(sec) * 365
../test/helpers/convert-time.ts.d:
export function minutes(sec: number): number;
export function hours(sec: number): number;
export function days(sec: number): number;
export function weeks(sec: number): number;
export function years(sec: number): number;
index.ts:
import { minutes, days } from '../test/helpers/convert-time';
tsconfig.json(用于ES5转换)
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"allowJs": true,
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"jsx": "react"
},
"files": [
"/test/helpers/convert-time.ts.d",
"/test/helpers/convert-time.js",
"index.ts"
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句