HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型

HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型 我想先将信号生成出来,然后再根据不同的情况量化成不同的格式,但在写泛型的过程中遇到了一些问题:

首先,在 TS 中我没办法用 T 来生成对象,这在 c++ 中是没问题的。

然后就是应该如何正确的进行类型限定?下面的方法是正确的吗?


更多关于HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这在C#也是没问题的,不能这么写很难受

更多关于HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ts没见过用泛型来声明的,你这个我感觉更像是应该先用interface声明完成后再去写具体的代码。ts只是个声明,他并不是JS实际运行时候的东西。 实际使用的话,你可能得把你要new的这个class通过参数传进来

在HarmonyOS鸿蒙Next中,ArkTS/TypeScript(TS)的泛型写法与标准TypeScript一致。泛型允许在定义函数、类或接口时使用类型参数,以提高代码的复用性和类型安全性。

  1. 函数泛型

    function identity<T>(arg: T): T {
        return arg;
    }
    

    这里T是类型参数,调用时可以指定具体类型,如identity<string>("Hello")

  2. 类泛型

    class GenericNumber<T> {
        zeroValue: T;
        add: (x: T, y: T) => T;
    }
    

    创建实例时可以指定类型,如let myGenericNumber = new GenericNumber<number>()

  3. 接口泛型

    interface GenericIdentityFn<T> {
        (arg: T): T;
    }
    

    使用时可以指定具体类型,如let myIdentity: GenericIdentityFn<number> = identity

  4. 泛型约束

    interface Lengthwise {
        length: number;
    }
    
    function loggingIdentity<T extends Lengthwise>(arg: T): T {
        console.log(arg.length);
        return arg;
    }
    

    这里T必须符合Lengthwise接口的约束。

  5. 泛型默认类型

    function createArray<T = string>(length: number, value: T): Array<T> {
        let result: T[] = [];
        for (let i = 0; i < length; i++) {
            result[i] = value;
        }
        return result;
    }
    

    如果未指定类型参数,则默认使用string

这些是ArkTS/TypeScript中泛型的基本写法,适用于HarmonyOS鸿蒙Next开发。

回到顶部