问题标签 [typescript2.2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2269 浏览

javascript - 使用 TypeScript 接口在 JS 代码中进行运行时验证

我可以像这样创建一个 TypeScript 接口,这将有助于静态类型:

但我想知道是否有办法将此信息转换为 JS 并使用它来进行运行时验证?否则我可能不得不在两个不同的地方跟踪这些信息,这并不有趣。

任何人都知道这是否可能以某种方式?

它可能看起来像

然后我可以使用这样的对象来进行运行时验证。

0 投票
1 回答
127 浏览

typescript - 如何参数化类装饰器功能?

我有以下测试代码,从互联网上的示例中收集:

用我编译tsc --experimentalDecorators test.ts没有任何警告或任何问题。但是调用它(使用node test.js命令),我得到以下结果:

我认为,装饰器无法正常工作,正如网上大多数示例(对于打字稿 1.5)所示。

如何正确实现这个装饰器?


生成的 javascript 代码是这样的:

0 投票
1 回答
861 浏览

angular - Typescript 2 通配符模块

我在 Angular 2 应用程序中导入 html 模板时遇到问题。

在 globals.d.ts

在 app.component.ts

该应用程序正常工作并且模板已加载,但我收到此错误 TS2352:类型 'typeof "*.html"' 无法转换为类型 'string'。有人有解决方法吗?

我想改为这样做。

但是转译的代码最终是这样的。

app_component_html_1 是我需要的字符串。他们为什么要添加 .default?

0 投票
1 回答
100 浏览

visual-studio-2015 - AMD RequireJS @types TypeScript 2 Visual Studio 2015 噩梦

我被分配了一项任务,将我们的 angularJs 项目更新为 TypeScript 2

我们目前使用 requirejs (AMD) 来填充库,然后使用

import 'angular'; import 'lodash';

据我所知,这是一个 ES6 模块加载语法。我们声明一个主应用程序模块并在其中导入库,然后在导入应用程序模块时

import 'Application';

这也是由 requirejs 填充的,当我们导入它时,我们会自动获取应用程序的所有导入库列表。


我实际上将项目成功更新为 TypeScript 2!!!

但是,当我尝试使用 @types 来包含 TypeScript 声明文件时,就会出现问题。

没有关于如何完成这项工作的完整参考!

****** 问题!******

当我尝试使用 @types/lodash 时,我在所有现有文件中都丢失了 _ (lodash) 的智能感知。

当我尝试

import * as _ from 'lodash';

然后我面临一个不同的错误:

Build:Module augmentation cannot introduce new names in the top level scope.

我的理解是 .d.ts 文件导出 UMD 模块。但是如何在我的 Visual Studio 2015 中引用 @types?

请帮忙!谢谢。

0 投票
0 回答
308 浏览

node.js - 如何捆绑 typescript-node-express 应用程序

我想构建一个完整的全栈 Web 应用程序。我的服务器端代码在打字稿中。我想配置我的项目,使其来自以下结构:

  • projectFolder/src/(server-side typescript files) -包含一个 index.ts 主文件
  • projectFolder/public/(client-side code) - 来自 index.ts express 代码。

  • 项目文件夹/ serverCodeBundle.js

当我在处理我的服务器端代码时,我希望在后台运行一些 watch 命令,并将我的所有 ts 文件捆绑到一些serverCodeBundle.js中,以便将其源映射到原始 ts 文件。

为了简单起见,假设我的服务器端代码如下所示(为简单起见,我省略了客户端代码服务):

运行 nodemon serverCodeBundle.js 应该会出现一条错误消息,指定错误来自 A.ts。

我已经在每个 ts 文件的开头尝试了 tsify[连同 require("source-map-support").install() (也只在 index.ts 中)和 tsconfig 中的 sourcemap 选项] 但无法得到它去工作。

是否有任何 tsify 配置、yeoman 生成器或任何其他捆绑器可以做到这一点?

0 投票
1 回答
828 浏览

typescript - Angular 4 和 Datejs 上的打字稿错误

我将Angular 4.0.0Typescript 2.2.1datejs 1.0.0-rc3一起使用。每当我尝试编译应用程序 ( npm start ) 时,都会收到以下打字稿错误:

编码:

查看文件node_modules/@types/datejs/index.d.ts,函数的声明parse()显然是Date

有人知道发生了什么吗?

0 投票
0 回答
140 浏览

visual-studio-code - 无法使用 Visual Studio Code 编译 ts 2.2.2 文件

我无法编译单个 ts-2.2.2 文件,我得到的输出是:

错误 TS5023:未知的编译器选项“strictNullChecks”。

错误 TS5023:未知的编译器选项“alwaysStrict”。

在右下角 VSCode 显示TypeScript 2.2.2,这是我要定位的版本。但是,如果我打开我的 *.ts 文件,屏幕顶部会出现一条警告,提示“版本不匹配!全局 tsc (1.8.34) != VS Code 的语言服务 (2.2.2)。可能会出现不一致的编译错误”

如果我执行命令'where tsc'我得到:

C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe

C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.js

如何明确指出打字稿编译器以便构建过程使用 ts 2.2.2?

0 投票
0 回答
30 浏览

node.js - TypeScript 只提取了我的 lib 目录中的一小部分文件,不知道为什么

我遇到了 TS 问题,其中 tsc 编译器没有拾取我的 lib 目录中的所有 .ts/.js 文件。这是一个非常简单的问题,不知道为什么会这样。tsc 只收集了大约 20% 的文件总数。有人知道为什么它不会在我的 lib 目录中提取所有这些吗?

我尝试了“经典”和“节点” moduleResolution,同样的问题。

我有这个 tsconfig.json 文件:

使用此命令:

我有以下输出

这是输出:

0 投票
1 回答
2935 浏览

node.js - 配置对象无效。Webpack 已使用与 Angular V4.0.0 中的 API 模式 2 不匹配的配置对象进行初始化

我已将 webpack 包更新到最新版本 2.3.2,并且我正在使用 Angular V4.0.0、typescript V2.2.2。运行“npm run build”命令时抛出以下错误。并且它在更新后对 angular2 工作正常,它抛出了错误

0 投票
2 回答
1339 浏览

javascript - 使用 TypeScript 为函数添加属性

假设我有一个名为 run 的函数表达式:

我想在这个运行函数中添加一个名为“default”的属性,一个对自身的引用。

这是为了支持 JS 中的多种模块导出格式。

我听说最好的方法是使用命名空间。

这是我的实际代码:

但我收到这个警告:

在此处输入图像描述

有谁知道为什么会出现该错误消息?

如您所见,TS 认为我没有默认属性的属性类型,但我很确定我使用命名空间声明......或者没有?被这个错误弄糊涂了——错误/警告似乎不正确。