问题标签 [typescript1.6]

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 投票
2 回答
1713 浏览

reactjs - 在带有 TSX 的 typescript 1.6 中使用 react-router 运行示例

有人使用 react-router 但使用 typescript 1.6+ TSX 开发的反应应用程序的完整运行示例吗?

0 投票
1 回答
2721 浏览

javascript - es6模块到commonjs与节点和谐标志下的打字稿

我在 --harmony 标志下使用带有节点的 TypeScript (1.6),所以我想将 es6 模块语法转换为 commonjs。

据我所知,我不能用 TypeScript 1.6 做到这一点。如果我将目标设置为 es6,将模块设置为 commonjs,则会收到 TypeScript 错误 -

以“ES6”或更高版本为目标时,无法将模块编译为“commonjs”、“amd”、“system”或“umd”。

为什么 TypeScript 不能编译为带有 ES6 目标的 commonjs?我想很多人都想这样做,因为 node 还不支持 ES6 模块。

我认为新的 moduleResolution 编译器选项可能会解决这个问题,但它似乎没有做任何事情。

目前,我不得不使用 babel 将模块语法转换为 commonjs,但我想从我的构建中删除 babel,以便我可以利用源映射。

有没有办法可以做到这一点?注意:我不想转译为 ES5。我希望我的 JS 在和谐标志下作为 ES6 运行。谢谢!

0 投票
1 回答
11455 浏览

typescript - 如何在 TypeScript 中更改 Promise<> 的结果类型

对于我构建的一些 Typescript 方法,我通常需要 promise 的异步性,但我不需要 promise 返回值(从概念上讲)。一个简单的例子可能是调用 initLanguageStrings() 方法来加载应用程序使用的语言字符串。语言字符串被放置到一个全局结构中,但仍需要承诺以确保应用程序在加载语言字符串之前不会继续运行。

将此场景重复两到三遍,然后我将所有初始化工作绑定到一组承诺中,这些承诺必须在继续之前全部完成。因此,我使用 Promise.all,就像这样(示例):

上面的代码实际上不会编译(TS1.5/1.6),因为 Promise.all() 返回 Promise<any[]> 而不是 Promise<void>。

所以我最终写的是这样的:

我相信这在语义上是正确的方法,因为“实现”实际上仍然是隐藏的,并且“内部承诺”(来自 Promise.all)永远不会“逃逸”给 initialiseApp() 的调用者。

但另一方面,我觉得这种方法很难看,并且想找到一种更好的方法来做到这一点,因为返回 Promise< void > 对我来说已经成为一种很常见的模式。

有没有更好的方法来实现我想要做的事情?

编译器将允许:

但它也让我觉得“棘手”和丑陋。

0 投票
2 回答
3423 浏览

angular - 导入非 typescript npm 模块的最佳解决方案

在 ES6 中使用 traceur 和 SystemJS 这种形式是正确的:

对于 Typescript 这还不够 - 我收到错误error TS2307: Cannot find module 'lodash'所以,我安装 'lodash.d.ts' :

现在,我得到:Module '"lodash"' has no default export.从 Typescript 编译器

所以,我尝试“节点样式”:

我得到:Uncaught (in promise) Error: require is not a function在浏览器中

最后:

它可以工作,但它是“旧形式”而不是正确的 ES6。

是否有一种正确的方法可以为非打字稿模块使用 ES6 样式的打字稿导入?

(打字稿 1.6.2)

0 投票
1 回答
297 浏览

typescript - 如何导入使用这个给定的导出结构导出的函数?

DefinitiveTyped 有一个 Highlight.js 的定义,它定义和导出一个模块,如下所示:

在给定的打字稿文件中,我正在尝试导入hljs对象,以便可以highlight在其上调用函数,如下所示:

但它没有说error TS2305: Module '"highlight.js"' has no exported member 'hljs'.

导入此对象的正确方法是什么,以便我可以编译我的 TS 文件而不会出现错误和警告?

0 投票
0 回答
342 浏览

reactjs - reactjs 高阶组合与打字稿

我的所有组件都有一个基类,它有一个我不想在所有组件中重复的初始化函数。这是我从另一个项目链接的单独包中。

我的应用程序像这样使用它

我现在的问题是我有一个高阶组合,我想将 MyApp 包裹起来,但我似乎不知道该怎么做。

我试过了。该文件位于 MyLib 项目中。

所以在 MyApp 中,我在最后添加而不是 export = MyApp,我做了

在我的 app.js 文件中,我渲染了应用程序

但是当我运行它时,我得到“无法添加属性上下文,对象不可扩展”错误。

我究竟做错了什么?

0 投票
1 回答
779 浏览

visual-studio-2015 - aurelia 视觉工作室 2015 智能感知

我正在使用 Visual Studio 2015 社区,我已经使用类型脚本配置了 Aurelia,它运行良好。但现在的问题是我没有在 VS2015 中为 Aurelia 获得任何情报。我的 vs2015 中内置了 Typescript,我还安装了 Web Essentials。请让我知道如何在我的打字稿代码中获得 Aurelia 的情报?

0 投票
1 回答
429 浏览

msbuild - TypeScript 1.6 升级后无法从 VS2013(或 TeamCity)部署

今天我更新到 TypeScript 1.6,现在CopyPipelineFiles尝试部署 Web 应用程序时任务失败。

我将 TypeScript 的已编译 JavaScript 输出目录重定向到scripts\compiled\Web 项目的设置中(通过TypeScriptOutDircsproj 文件中的条目),直到现在这一直运行良好。Typescript 文件正在正确编译,并编译到正确的目录(即scripts\compiled\在 web 项目目录下)。

但是,CopyPipelineFiles任务似乎对 TypeScript 文件的根目录感到困惑,现在总是假设它是 Web 项目的根目录。结果,它将文件夹添加到不存在的路径中,例如,在编译之后scripts\foo.ts,而不是抓取scripts\compiled\foo.jsMSBuild 正在寻找的\scripts\compiled\scripts\foo.js. 我尝试$(ProjectDir)在输出目录中使用,我也尝试将 设置TypeScriptRootDir为适当的根目录(例如scripts\),但问题仍然存在。

我能够补救这种情况的唯一方法是删除输出目录并允许将编译后的 JavaScript 文件输出到它们对应的 TypeScript 文件的相同位置。

以下是我收到的真实错误示例,其中 TypeScript 文件的路径为scripts\account\app.ts

将文件 scripts\compiled\scripts\account\app.js 复制到 obj\Release\AspnetCompileMerge\Source\scripts\compiled\scripts\account\app.js 失败。找不到路径“scripts\compiled\scripts\account\app.js”的一部分

这发生在所有安装了 Typescript 1.6 的本地机器上,以及我们安装了 1.6 的 TeamCity 构建服务器上。

0 投票
0 回答
551 浏览

angularjs - 使用 Visual Studio 代码调试 Typescript 代码时出现“未定义角度”

我从https://github.com/DeborahK/Angular-TypeScript下载了代码,然后执行了以下步骤:

  1. 使用 Visual Studio Code(版本:0.9.1)打开代码
  2. 用其他功能扩展了代码。
  3. 执行以下屏幕截图中显示的命令以生成源映射文件。 在此处输入图像描述

4.执行创建用于调试代码的launch.json的步骤

tsconfig.json

我现在按下 Ctrl + Shift + D 命令并尝试调试代码。控件转到 app.ts 文件并在那里停止,但出现以下异常:“未定义角度”

在此处输入图像描述

任何人都可以帮助我知道我是否缺少任何东西来解决这个问题。

0 投票
1 回答
2924 浏览

javascript - 使用 typescript 1.6 和 es6 语法内联使用 import

我正在考虑更新一些旧的 js 库,我必须使用 ES6 约定来打字,但是我遇到了一个绊脚石。

所以从历史上看,当我动态加载 JSON 文件时,我会做这样的事情:

这很好用,在某些情况下,我也会动态地包含文件夹中的一些模块:

这使我能够根据之前的配置切换实现,并且运行良好。这里要注意的关键点是模块的解析器是变量而不是静态文本,并且它们在不在根级别的函数内部运行。

因此,考虑到这一点,我转到了 TS 中包含的 es6 样式模块,并意识到我不能执行上述操作,因为这不是有效的语法:

这是有道理的,因为我知道 ES6 模块需要静态解析模块,所以我对此很满意,但是在 typescript 1.6 世界中,我不确定如何解决这个问题,var includedModule = require(theDirectory);因为它似乎是无效的,因为它不知道require,这可能是通过包含节点 jsd.ts文件解决了问题,但是我希望有人可以指导未来新的 es6 世界中所需的方法是什么?