在typescript中,自定义函数如何获取扩展类型的属性值
时间: 2024-04-10 16:34:23 浏览: 176
vue中typescript装饰器的使用方法超实用教程
在 TypeScript 中,自定义函数可以通过泛型来获取扩展类型的属性值。你可以将泛型参数定义为一个包含扩展类型的对象,然后通过点号(`.`)来访问该对象的属性值。以下是一个示例:
```typescript
type ExtendedType = {
class: 'turn1' | '';
};
function getProperty<T extends ExtendedType, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const attrs: ExtendedType = {
class: 'turn1'
};
const value = getProperty(attrs, 'class');
console.log(value); // 输出 'turn1'
```
在上面的代码中,我们定义了一个泛型函数 `getProperty`,它接受两个参数:一个对象 `obj` 和一个键 `key`。我们使用 `T extends ExtendedType` 来约束泛型 `T`,确保它是 `ExtendedType` 或者它的子类型。然后,我们使用 `K extends keyof T` 来约束泛型 `K`,确保它是 `T` 的属性之一。
在函数体内部,我们使用 `obj[key]` 来访问对象 `obj` 的属性值,并使用类型断言 `T[K]` 来指定返回值的类型。最后,我们调用函数 `getProperty`,传入扩展类型的对象 `attrs` 和属性名 `'class'`,并将返回值打印到控制台上。
需要注意的是,通过这种方式获取属性值时,编译器会进行类型检查,并根据对象的实际类型来推断返回值的类型。
阅读全文