gpt4 book ai didi

javascript - 在 TypeScript 方法中使用泛型类型

转载 作者:行者123 更新时间:2023-12-01 03:31:35 24 4
gpt4 key购买 nike

在 typescript 中,我有以下代码:

public static sortByProperty<T>( array: T[], prop: string ): void 
{
var availProps: string[] = Object.getOwnPropertyNames( T ); // or something typeof T, anyway I got error

if(availProps.length>0 && availProps.indexOf(prop) > -1){
return array.Sort(function(a, b) {
var aItem = a[prop];
var bItem = b[prop];
return ((aItem < bItem ) ? -1 : ((aItem > bItem ) ? 1 : 0));
});
}
}

我想使用像

Test.sortByProperty<MyObject>(arrayOf_MyObject, "APropertyName");

我收到错误,T 未知

最佳答案

为什么不让编译器为您进行属性检查。您可以将 prop 参数键入为 keyof T,编译器将强制执行它。

class Test {
public static sortByProperty<T>(array: T[], prop: keyof T): void {

array.sort(function (a, b) {
var aItem = a[prop];
var bItem = b[prop];
return ((aItem < bItem) ? -1 : ((aItem > bItem) ? 1 : 0));
});
}
}

interface MyObject {
test: string
}

Test.sortByProperty<MyObject>([{test: "something"}], "test"); // OK
Test.sortByProperty<MyObject>([{test: "something"}], "notaprop"); // Error
<小时/>

如果您想自己检查属性,要回答您最初的问题,您必须向 Object.getOwnPropertyNames 传递一个值,例如:Object.getOwnPropertyNames(array[0]) 假设您的数组至少有一项。

关于javascript - 在 TypeScript 方法中使用泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44513952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com