在深度对象路径的Typescript泛型约束中使用文字字符串参数可以通过以下方式实现:
function getValue<T, K extends keyof T>(obj: T, path: K): T[K] {
// 实现逻辑
}
keyof T
来约束路径参数,以确保它是对象T
的有效属性。split
函数将字符串路径拆分为属性名称数组。const pathArray = path.split('.');
reduce
方法来逐级访问对象的深层属性。在每个迭代中,我们将当前属性名称作为键来访问对象,并将结果赋值给下一次迭代的对象。const value = pathArray.reduce((acc, key) => acc[key], obj);
return value;
完整的代码示例如下:
function getValue<T, K extends keyof T>(obj: T, path: K): T[K] {
const pathArray = path.split('.');
const value = pathArray.reduce((acc, key) => acc[key], obj);
return value;
}
使用示例:
interface Person {
name: string;
age: number;
address: {
city: string;
street: string;
};
}
const person: Person = {
name: 'John',
age: 30,
address: {
city: 'New York',
street: '123 ABC Street',
},
};
const name = getValue(person, 'name'); // 返回 'John'
const city = getValue(person, 'address.city'); // 返回 'New York'
在上述示例中,我们定义了一个Person
接口,表示一个人的信息。然后,我们创建了一个person
对象,并使用getValue
函数来获取对象的深层属性值。通过传递不同的路径参数,我们可以获取不同的属性值。
对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但你可以根据自己的需求和实际情况,在腾讯云官方网站上查找相关产品和文档。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云