HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型
HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型 我想先将信号生成出来,然后再根据不同的情况量化成不同的格式,但在写泛型的过程中遇到了一些问题:
首先,在 TS 中我没办法用 T 来生成对象,这在 c++ 中是没问题的。
然后就是应该如何正确的进行类型限定?下面的方法是正确的吗?
更多关于HarmonyOS 鸿蒙Next ArkTS/TS 应该如何写泛型的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这在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一致。泛型允许在定义函数、类或接口时使用类型参数,以提高代码的复用性和类型安全性。
-
函数泛型:
function identity<T>(arg: T): T { return arg; }
这里
T
是类型参数,调用时可以指定具体类型,如identity<string>("Hello")
。 -
类泛型:
class GenericNumber<T> { zeroValue: T; add: (x: T, y: T) => T; }
创建实例时可以指定类型,如
let myGenericNumber = new GenericNumber<number>()
。 -
接口泛型:
interface GenericIdentityFn<T> { (arg: T): T; }
使用时可以指定具体类型,如
let myIdentity: GenericIdentityFn<number> = identity
。 -
泛型约束:
interface Lengthwise { length: number; } function loggingIdentity<T extends Lengthwise>(arg: T): T { console.log(arg.length); return arg; }
这里
T
必须符合Lengthwise
接口的约束。 -
泛型默认类型:
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开发。