问题标签 [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 回答
757 浏览

typescript - 在课堂上使用私有属性解构赋值导致“从未使用”

我在类主体中声明了两个私有的、静态的和只读的属性。在类方法中,我不是试图通过在类对象中使用索引表达式来获取属性,而是在const声明中使用解构赋值。

解构赋值没有问题,但如果我不尝试索引我的类来获取这些私有属性,TypeScript 会给我以下警告:

'PROGRESS_BAR_WIDTH' 已声明但从未使用过。

'PROGRESS_BAR_HEIGHT' 已声明但从未使用过。

我在 TypeScript GitHub 存储库中创建了一个问题,但还没有得到任何帮助。

注意:当这些属性不是私有(公共)时,这些警告会淡出。我在方法中使用这些私有静态(和只读)属性init,它不是静态的。

这是我的代码:

0 投票
1 回答
745 浏览

typescript - TypeScript 重载和泛型

我确实有这个课:

并像这样使用它:

现在我想要同样的东西(上面评论的变量类型),但我想对 prop 和 obj 使用相同的函数名。我想要一个基于属性类型切换返回类型的重载。

在 TypeScript 中可以吗?

0 投票
5 回答
49192 浏览

typescript - 从 TypeScript 中的根路径导入模块

假设我有一个项目,它的主要源目录是:

基于此目录,每个导入路径都与其相关。即,假设:

如同:

我的条目编译文件将位于:

例如。那么,有没有办法在编译器选项中指定这种入口路径(C:\product\src例如)?我需要在tsconfig.json文件中指定这个,因为我将使用 webpack。

我已经尝试了上面的示例,但是 TypeScript 说找不到请求的模块:

我的 tsconfig.json 文件(在另一个项目中,但都相似):

0 投票
2 回答
85759 浏览

typescript - 错误 TS2345:“T”类型的参数不可分配给“对象”类型的参数

下面的代码在 TypeScript 2.1.6 上运行良好:

更新到 TypeScript 2.2.1 后,我收到以下错误:

错误 TS2345:“T”类型的参数不可分配给“对象”类型的参数。

0 投票
1 回答
216 浏览

typescript - 强制类型的字段不是可选的

给定具有可选属性的类型,包括对具有可选属性的另一种类型(例如其自身)的嵌套引用:

有没有办法生成该类型的版本,其中所有属性现在都是非可选的:

这种类型本质上是 Partial 的深层形式的相反,这是可行的:

我想出了一个奇怪的技巧来浅浅地处理一个类型的实例:

但是我找不到递归表达这种类型的方法,主要是因为我无法将上面的函数表达为实际的类型定义——它之所以起作用是因为obj: Partial<T>参数,也许是因为它推断出任何可选参数是由于 obj 是部分的,而不是因为对象本身。

0 投票
0 回答
353 浏览

angular - _nativeError:错误:无法解析“解析器”(?)的所有参数。确保所有参数都被修饰

我收到此错误:错误:无法解析“解析器”的所有参数(?)。确保所有参数都用 Inject 修饰或具有有效的类型注释,并且“Parser”用 Injectable 修饰。在 NoAnnotationError.BaseError [作为构造函数]

我的 webpack 包工作正常,没有错误,但是当我加载项目时,我得到了上面的错误。

如果我有这样的 tsconfig,请在某处阅读:

我不需要使用 @injectables,它对 angular2 和 TS 来说非常新。

在我的 webpack 配置中,我有这个:

使用 Angular 4.0.0-beta.1、webpack 2 和 typescript 2.2.1

谢谢你的帮助。

0 投票
1 回答
955 浏览

angular - 用 gulp-replace 替换 Typescript 文件中的字符串

我正在尝试使用 gulp-replace 任务将构建版本插入到我的 Angular 2 组件文件中。我正在从流程变量中检索构建版本process.env.npm_package_version。这部分工作正常,因为我能够将值记录到控制台并获得预期值。但是,我的任务的 gulp-replace 部分不起作用。我replace先执行任务。

任务:

来源:

0 投票
1 回答
318 浏览

typescript - 如何使用 npm 模块的自定义类型定义?

我已经为 npm 包编写了类型定义react-sortable-tree。我无法弄清楚我应该如何消费它。这是我尝试过的。

我命名了定义文件react-sortable-tree/index.d.ts(按照Typescript 文档中给出的说明)并将文件名添加到我的tsconfig.json. Typescript 编译器(2.2.1 版)找不到模块的定义。我尝试了两种模块解析方法 ClassicNode但均未成功。

将文件重命名为后react-sortable-tree.d.ts,编译器通过解析方法识别出文件Classic。但是,npm 包中包含其他类型定义文件的模块(例如,redux),编译器无法找到这些包的定义。

使用解析方法Node时,编译器会查找所有包的类型定义,但我已定义的包除外。对于react-sortable-tree包,编译器解析包附带的实际 Javascript 文件的路径并忽略我的定义。因此,不会发生类型检查。

如何编写我的定义,在哪里放置它,以及我应该指定哪些编译器选项以便编译器考虑我的类型定义?

0 投票
1 回答
8751 浏览

typescript - typescript 2.2 接口扩展对象类型

我有使用对象作为参数的函数,如下所示:

这在某些情况下可以正常工作,但不是全部:

我试图像这样从 TS 2.2 对象类型扩展我的接口

禁止基本类型,但打字稿告诉“不能很好地命名'对象'”。

有没有办法定义一个接口必须是一个对象但没有必填字段?

0 投票
1 回答
419 浏览

node.js - TypeScript 警告 => TS7017:对象类型的索引签名隐含地具有任何类型

我收到以下 TypeScript 警告 -

对象类型的索引签名隐式具有任何类型

这是出现警告的代码:

任何人都可以从这个代码块中确定为什么会出现警告吗?我想不明白。

如果有帮助,这是以下定义ISumanEvent