问题标签 [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.
reactjs - 在带有 TSX 的 typescript 1.6 中使用 react-router 运行示例
有人使用 react-router 但使用 typescript 1.6+ TSX 开发的反应应用程序的完整运行示例吗?
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 运行。谢谢!
typescript - 如何在 TypeScript 中更改 Promise<> 的结果类型
对于我构建的一些 Typescript 方法,我通常需要 promise 的异步性,但我不需要 promise 返回值(从概念上讲)。一个简单的例子可能是调用 initLanguageStrings() 方法来加载应用程序使用的语言字符串。语言字符串被放置到一个全局结构中,但仍需要承诺以确保应用程序在加载语言字符串之前不会继续运行。
将此场景重复两到三遍,然后我将所有初始化工作绑定到一组承诺中,这些承诺必须在继续之前全部完成。因此,我使用 Promise.all,就像这样(示例):
上面的代码实际上不会编译(TS1.5/1.6),因为 Promise.all() 返回 Promise<any[]> 而不是 Promise<void>。
所以我最终写的是这样的:
我相信这在语义上是正确的方法,因为“实现”实际上仍然是隐藏的,并且“内部承诺”(来自 Promise.all)永远不会“逃逸”给 initialiseApp() 的调用者。
但另一方面,我觉得这种方法很难看,并且想找到一种更好的方法来做到这一点,因为返回 Promise< void > 对我来说已经成为一种很常见的模式。
有没有更好的方法来实现我想要做的事情?
编译器将允许:
但它也让我觉得“棘手”和丑陋。
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)
typescript - 如何导入使用这个给定的导出结构导出的函数?
DefinitiveTyped 有一个 Highlight.js 的定义,它定义和导出一个模块,如下所示:
在给定的打字稿文件中,我正在尝试导入hljs
对象,以便可以highlight
在其上调用函数,如下所示:
但它没有说error TS2305: Module '"highlight.js"' has no exported member 'hljs'.
导入此对象的正确方法是什么,以便我可以编译我的 TS 文件而不会出现错误和警告?
reactjs - reactjs 高阶组合与打字稿
我的所有组件都有一个基类,它有一个我不想在所有组件中重复的初始化函数。这是我从另一个项目链接的单独包中。
我的应用程序像这样使用它
我现在的问题是我有一个高阶组合,我想将 MyApp 包裹起来,但我似乎不知道该怎么做。
我试过了。该文件位于 MyLib 项目中。
所以在 MyApp 中,我在最后添加而不是 export = MyApp,我做了
在我的 app.js 文件中,我渲染了应用程序
但是当我运行它时,我得到“无法添加属性上下文,对象不可扩展”错误。
我究竟做错了什么?
visual-studio-2015 - aurelia 视觉工作室 2015 智能感知
我正在使用 Visual Studio 2015 社区,我已经使用类型脚本配置了 Aurelia,它运行良好。但现在的问题是我没有在 VS2015 中为 Aurelia 获得任何情报。我的 vs2015 中内置了 Typescript,我还安装了 Web Essentials。请让我知道如何在我的打字稿代码中获得 Aurelia 的情报?
msbuild - TypeScript 1.6 升级后无法从 VS2013(或 TeamCity)部署
今天我更新到 TypeScript 1.6,现在CopyPipelineFiles
尝试部署 Web 应用程序时任务失败。
我将 TypeScript 的已编译 JavaScript 输出目录重定向到scripts\compiled\
Web 项目的设置中(通过TypeScriptOutDir
csproj 文件中的条目),直到现在这一直运行良好。Typescript 文件正在正确编译,并编译到正确的目录(即scripts\compiled\
在 web 项目目录下)。
但是,CopyPipelineFiles
任务似乎对 TypeScript 文件的根目录感到困惑,现在总是假设它是 Web 项目的根目录。结果,它将文件夹添加到不存在的路径中,例如,在编译之后scripts\foo.ts
,而不是抓取scripts\compiled\foo.js
MSBuild 正在寻找的\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 构建服务器上。
angularjs - 使用 Visual Studio 代码调试 Typescript 代码时出现“未定义角度”
我从https://github.com/DeborahK/Angular-TypeScript下载了代码,然后执行了以下步骤:
4.执行创建用于调试代码的launch.json的步骤
tsconfig.json
我现在按下 Ctrl + Shift + D 命令并尝试调试代码。控件转到 app.ts 文件并在那里停止,但出现以下异常:“未定义角度”
任何人都可以帮助我知道我是否缺少任何东西来解决这个问题。
javascript - 使用 typescript 1.6 和 es6 语法内联使用 import
我正在考虑更新一些旧的 js 库,我必须使用 ES6 约定来打字,但是我遇到了一个绊脚石。
所以从历史上看,当我动态加载 JSON 文件时,我会做这样的事情:
这很好用,在某些情况下,我也会动态地包含文件夹中的一些模块:
这使我能够根据之前的配置切换实现,并且运行良好。这里要注意的关键点是模块的解析器是变量而不是静态文本,并且它们在不在根级别的函数内部运行。
因此,考虑到这一点,我转到了 TS 中包含的 es6 样式模块,并意识到我不能执行上述操作,因为这不是有效的语法:
这是有道理的,因为我知道 ES6 模块需要静态解析模块,所以我对此很满意,但是在 typescript 1.6 世界中,我不确定如何解决这个问题,var includedModule = require(theDirectory);
因为它似乎是无效的,因为它不知道require
,这可能是通过包含节点 jsd.ts
文件解决了问题,但是我希望有人可以指导未来新的 es6 世界中所需的方法是什么?