返回类型为info的动态对象属性

威廉·范德温:

我有以下问题:

getValue()函数运行良好,并获得了所需的值。但是,类型信息在此过程中丢失,并且类型变为任意类型。

我知道如何使用类型转换解决此问题,但是如果可以通过类本身在类中完成此转换,那就太好了。这可能吗?

class hi {
    five = 5;
    foo = '3';

    getValue(val: string) {
        // Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'hi'.
        // No index signature with a parameter of type 'string' was found on type 'hi'
        return this[val]  // this will always return any because TS can infer the type
    }
}

const hey = new hi();

// I would like this type to be number by adding additional logic in the class
const numberFive = hey.getValue('five'); // type any

// I would like this type conversion to be handled in the class if this is possible
const numberFive2 = hey.getValue('five') as number; // type number 
ritaj:
class Foo {
  five = 5;
  foo = '3';

  getValue<T extends keyof this>(val: T): this[T] {
    return this[val];
  }
}

const foo = new Foo();

const stringFoo = foo.getValue('foo');   // string
const numberFive = foo.getValue('five'); // number

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

返回动态对象类型的通用方法

空值运算符为动态对象的属性返回null

在angularjs ng-repeat中为对象动态添加属性

如何在TypeScript中为具有动态属性的对象定义类型

如何从方法返回动态和强类型对象

从仅接受类类型的方法动态返回对象

动态访问对象属性的Typescript类型推断

是否可以基于对象属性进行动态类型化?

在TypeScript中使用字符串文字基于对象属性的动态返回类型

动态创建一个返回对象属性的getter

Haxe:检查动态类型是否为对象

Postgres SQL查询,返回ID为动态键的JSON对象

TS定义返回对象中动态属性的类型

返回对象动态类型的Java函数

C#为属性网格动态转换对象

通过返回字符串的函数的Javascript动态对象属性

如何使用反射从动态(匿名类型)对象获取属性?

动态为对象属性分配值

为动态创建的Binding对象创建属性路径的正确方法?

为对象属性创建动态名称

如何动态更改对象的属性类型?

从对象动态返回特定属性

更新由以下人员管理的视图的属性“accessibilityLabel”时出错:RCTView TypeError:预期的动态类型“字符串”,但类型为“对象”

解析参数的返回类型被推断为对象?

是否可以将对象中函数的流类型动态设置为其属性之一的类型?

如何为具有动态属性的扩展对象创建类型

如何从参数对象动态推断返回类型?

如何设置类方法从类属性动态返回类型

Typescript 动态联合类型的动态对象属性