问题标签 [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.
typescript - 在课堂上使用私有属性解构赋值导致“从未使用”
我在类主体中声明了两个私有的、静态的和只读的属性。在类方法中,我不是试图通过在类对象中使用索引表达式来获取属性,而是在const
声明中使用解构赋值。
解构赋值没有问题,但如果我不尝试索引我的类来获取这些私有属性,TypeScript 会给我以下警告:
'PROGRESS_BAR_WIDTH' 已声明但从未使用过。
'PROGRESS_BAR_HEIGHT' 已声明但从未使用过。
我在 TypeScript GitHub 存储库中创建了一个问题,但还没有得到任何帮助。
注意:当这些属性不是私有(公共)时,这些警告会淡出。我在方法中使用这些私有静态(和只读)属性init
,它不是静态的。
这是我的代码:
typescript - TypeScript 重载和泛型
我确实有这个课:
并像这样使用它:
现在我想要同样的东西(上面评论的变量类型),但我想对 prop 和 obj 使用相同的函数名。我想要一个基于属性类型切换返回类型的重载。
在 TypeScript 中可以吗?
typescript - 从 TypeScript 中的根路径导入模块
假设我有一个项目,它的主要源目录是:
基于此目录,每个导入路径都与其相关。即,假设:
如同:
我的条目编译文件将位于:
例如。那么,有没有办法在编译器选项中指定这种入口路径(C:\product\src
例如)?我需要在tsconfig.json
文件中指定这个,因为我将使用 webpack。
我已经尝试了上面的示例,但是 TypeScript 说找不到请求的模块:
我的 tsconfig.json 文件(在另一个项目中,但都相似):
typescript - 错误 TS2345:“T”类型的参数不可分配给“对象”类型的参数
下面的代码在 TypeScript 2.1.6 上运行良好:
更新到 TypeScript 2.2.1 后,我收到以下错误:
错误 TS2345:“T”类型的参数不可分配给“对象”类型的参数。
typescript - 强制类型的字段不是可选的
给定具有可选属性的类型,包括对具有可选属性的另一种类型(例如其自身)的嵌套引用:
有没有办法生成该类型的版本,其中所有属性现在都是非可选的:
这种类型本质上是 Partial 的深层形式的相反,这是可行的:
我想出了一个奇怪的技巧来浅浅地处理一个类型的实例:
但是我找不到递归表达这种类型的方法,主要是因为我无法将上面的函数表达为实际的类型定义——它之所以起作用是因为obj: Partial<T>
参数,也许是因为它推断出任何可选参数是由于 obj 是部分的,而不是因为对象本身。
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
谢谢你的帮助。
angular - 用 gulp-replace 替换 Typescript 文件中的字符串
我正在尝试使用 gulp-replace 任务将构建版本插入到我的 Angular 2 组件文件中。我正在从流程变量中检索构建版本process.env.npm_package_version
。这部分工作正常,因为我能够将值记录到控制台并获得预期值。但是,我的任务的 gulp-replace 部分不起作用。我replace
先执行任务。
任务:
来源:
typescript - 如何使用 npm 模块的自定义类型定义?
我已经为 npm 包编写了类型定义react-sortable-tree
。我无法弄清楚我应该如何消费它。这是我尝试过的。
我命名了定义文件react-sortable-tree/index.d.ts
(按照Typescript 文档中给出的说明)并将文件名添加到我的tsconfig.json
. Typescript 编译器(2.2.1 版)找不到模块的定义。我尝试了两种模块解析方法 Classic
,Node
但均未成功。
将文件重命名为后react-sortable-tree.d.ts
,编译器通过解析方法识别出文件Classic
。但是,npm 包中包含其他类型定义文件的模块(例如,redux
),编译器无法找到这些包的定义。
使用解析方法Node
时,编译器会查找所有包的类型定义,但我已定义的包除外。对于react-sortable-tree
包,编译器解析包附带的实际 Javascript 文件的路径并忽略我的定义。因此,不会发生类型检查。
如何编写我的定义,在哪里放置它,以及我应该指定哪些编译器选项以便编译器考虑我的类型定义?
typescript - typescript 2.2 接口扩展对象类型
我有使用对象作为参数的函数,如下所示:
这在某些情况下可以正常工作,但不是全部:
我试图像这样从 TS 2.2 对象类型扩展我的接口
禁止基本类型,但打字稿告诉“不能很好地命名'对象'”。
有没有办法定义一个接口必须是一个对象但没有必填字段?
node.js - TypeScript 警告 => TS7017:对象类型的索引签名隐含地具有任何类型
我收到以下 TypeScript 警告 -
对象类型的索引签名隐式具有任何类型
这是出现警告的代码:
任何人都可以从这个代码块中确定为什么会出现警告吗?我想不明白。
如果有帮助,这是以下定义ISumanEvent
: