gpt4 book ai didi

visual-studio-2015 - 使用 Typescript 2.0 的 MomentJS 类型定义

转载 作者:行者123 更新时间:2023-12-04 11:34:50 27 4
gpt4 key购买 nike

好的,我关于 SO 的第一个问题,多么令人兴奋! :)

我正在尝试让 MomentJS 定义与 Typescript 2.0 一起使用。

只需执行 npm install @types/angular --save-dev,我就可以让 Angular 定义正常工作。 .

然而,MomentJS (2.15.1) 已经带有 moment.d.ts作为您安装时获得的软件包的一部分。

如果您尝试对角度执行类似的方法,即 npm install @types/moment --save-dev ,这就是你得到的:

npm WARN deprecated @types/moment@2.13.0: This is a stub types definition for Moment (https://github.com/moment/moment). Moment provides its own type definitions, so you don't need @types/moment installed!



当然,如果你去 node_modules\@types\moment ,里面没有什么用处。

是的,我已经添加了 tsconfig.json文件在我的根文件夹中,因此 Typescript 2.0 将自动选择 node_modules 上的 @types(这就是 Angular 工作正常的原因),但对于 MomentJS,我收到以下错误(因为 .d.ts 不在 TS2 期望的位置它是):

TS2304 Cannot find name 'moment'.



我也尝试玩弄 "typeRoots"配置 tsconfig.json没有任何运气。

这是我的 package.json 的相关部分:
{
"devDependencies": {
"@types/angular": "^1.5.16"
},
"dependencies": {
"moment": "^2.15.1"
}
}

如果这很重要,我正在使用 VS2015。

所以......关于如何让 Typescript 2.0 读取位于“意外”文件夹中的 Moment 类型定义的任何想法?

最佳答案

您会找到 moment.d.ts文件下 node_modules\moment因为它与时刻本身打包在一起。

使用 VS 2017 和 TypeScript 2.2,您不必指定 typeRoots ;但是,您的环境可能需要指定其中的两个或多个,例如:
typeRoots: [ 'node_modules/@types/', 'node_modules/moment/' ]
^ 我忘了如果每个 @types子目录需要在 typeRoots 中输入.

这是我在 VS 2017 和 TypeScript 2.2 中使用的过程,对 tsconfig.json 没有任何特殊更改(但这些东西在最近的版本中发生了变化):

它是通过 ES6 样式导入自动找到的:
import * as moment from "moment";
这将导入名为 moment 的函数以及命名空间 moment合并为一个别名。

如果您还想要 Moment (返回类型)导入,也执行以下操作:
import { Moment } from "moment";
在当前moment.d.ts (2.18.1),否则无法访问此类型。

过去我用过 var moment = require("moment");但这在您的设置中可能是不可能的,除非您正在运行 browserifyrequirejs转换 CommonJS/AMD -style 需要浏览器支持的东西。

关于visual-studio-2015 - 使用 Typescript 2.0 的 MomentJS 类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40166938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com