问题标签 [typescript-class]

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 投票
0 回答
75 浏览

reactjs - 如何使用 TypeScript 2.9 创建扩展初始错误的新异常?

我用 TypeScript 写了一个小函数来级联 React 和 React Native 中的错误:

然后我将它用于:

我在论坛上看到大多数人当时都在使用自定义错误类:

我是初学者,还不太了解每种方法的含义。我想避免一个很大的陷阱,这意味着我需要重构我的所有代码。

您能否向我解释每种方法的含义,并为我指出自定义错误和级联错误的正确方法?

谢谢

0 投票
2 回答
41 浏览

typescript - 如何编写类型安全的联合类型化保存方法

我想创建一个通用的 http 服务,并且我想有一个save(value)类似的方法来调用create(value)update(value)在下面。扭曲是我想选择配置值create接受的类型,它可以与更新值完全不同。

像这样:

this 的泛型是这样的:

我想合并这两种情况:

  1. create 和 update 共享相同的接口,其中实体(称为E) id 与属性 name Id。这个 id 是通用的(称为它I),它的类型是I | null | undefined. 该接口因此而扩展MaybeEntity<I>
  2. 创建和更新接受不同的接口。使用 ceate 函数时,它应该接受不存在C extends NotEnity的接口,或者返回一个. 更新只接受必须在的地方IdnullundefinedEE extends Entity<I>IdI

我已经尝试过这些类型,但我失败了

0 投票
1 回答
120 浏览

typescript - 仅循环打字稿中某个类的某个键

我想只循环某个类的某些键。我不想使用索引签名[key:string]:any,因为不推荐。

这是我的想法:

这是打字稿游乐场链接

我得到了错误

为什么k循环中的类型是Extract<keyof M, string>?不应该typeof I吗?

0 投票
1 回答
119 浏览

javascript - Angular/Typescript 接口和实现类:带有 `@, $` 字符的属性

我在我的 Angular 应用程序中遵循 JHipster 的方法,我相信它几乎是基于最佳实践的。就模型而言,这就是他们的做法:

当我尝试添加以下属性时遇到了问题(由我正在使用的第三方 API 决定,还有许多其他包含其他特殊字符,例如$等):

所以,似乎不是类本身的用法有问题,而是构造函数中的用法,以这种方式声明它。

有谁知道如何至少解决这个问题?

0 投票
1 回答
229 浏览

typescript - 基于属性的打字稿方法返回类型

Typescript 的条件: T extends U ? X : Y语法非常强大,但是我还没有找到一种方法来根据类的属性或函数本身的某些内容来指定返回的类型。例如,采取这个简单的类:

有没有办法将返回的类型缩小为简单的数字或字符串以进行类型检查?我遇到的特殊问题是我有这样的结构:

因为fi.first()输入为 return Base,所以该行if (s.y > 0)引发错误,因为yBase 上不存在。在这种情况下,它不会太难做到:

但如果我们有这样的东西:

然后你最终得到如下代码:

被改写为:

如果我们实际上创建可以返回生成器等的生成器,情况会变得更糟,因为在for...of循环中声明类型是不可能的。它还将确定返回值应该是什么的逻辑转移到使用软件,FilterIterator 或 Base 本身应该知道可能返回哪些类。

欢迎任何解决方案或改进。

0 投票
2 回答
58 浏览

typescript - 类型“XX”不可分配给类型“YY”。'XX' 可分配给'YY' 类型的约束,但'YY' 可以被实例化

我收到了这个错误:

从这段代码:

有谁知道为什么以及如何解决这个错误?

0 投票
1 回答
831 浏览

typescript - 如何修复“属性没有初始化程序并且未在构造函数中明确分配”错误?

我对这些课程有疑问。我想使用doSomething()class 独有的方法B而不每次都进行类型转换,但是当我将 property 指定a为 typeB时,它​​告诉我它没有在构造函数中赋值,这在父构造函数中进行赋值时有些错误。

我究竟做错了什么?

操场

0 投票
1 回答
102 浏览

typescript - 类型上不存在属性,当它明确存在时

我正在使用 Typescript 编写代码,并且正在尝试访问任何实现名为 ObjectTemplate 的接口的对象上名为 id 的属性。

假设我有一个 class Player,它 implements ObjectTemplate,它有一个 id 属性。然后,我传入new Player()下面addObject()提供的函数。

当我尝试访问new Player().id(或我在参数中命名的obj.id)时,我收到一条错误消息,告诉我Property 'id' does not exist on type 'ObjectTemplate'

操场

0 投票
1 回答
5703 浏览

typescript - 明确赋值断言和环境声明有什么区别?

!当断言一个字段在类中肯定被初始化时, (感叹号,明确赋值断言)和declare修饰符有什么区别?

以下代码是严格模式下的错误,因为 TS 不确定该字段是否已初始化。

我见过两种处理方法:

  1. 确定赋值断言:
  2. 环境声明:

我看不出这两种技术之间的区别。它们都解决了错误,它们都不发出代码,并且它们都不允许初始化程序。环境声明(在 v3.7 中发布)是否简单地过时明确的分配(在 v2.7 中发布)?应该declare尽可能使用而不是使用!

0 投票
1 回答
66 浏览

node.js - Typescript - 从基类中的静态方法实例化子类,使用 args 并引用其他静态方法

我正在尝试从基类中的静态方法实例化一个子类。我想正确键入我的基类,而不是any在我所有的静态方法上使用它作为返回类型。我在这里尝试了解决方案,但它不适用于引用其他静态方法或接受参数的静态方法。如何正确地从 typescript 中的基类继承,并且仍然引用其他方法并接受参数?

这会导致两个不同的错误

  1. Property 'getName' does not exist on type 'new (...args: any[]) => T'.(在find方法中)
  2. Type 'BaseModel' is missing the following properties from type 'Child': name.(在findOne方法的返回类型中)