实现一个ts类型,通过传入指定函数和属性名称,返回这个函数返回值中指定属性的类型
时间: 2024-05-02 22:19:40 浏览: 147
好的,这是一个技术问题,让我来帮您解答。
您可以使用 TypeScript 的 ReturnType 工具类型来实现此功能。例如:
```
function getPropertyType<T, K extends keyof ReturnType<T>>(fn: T, key: K): ReturnType<T>[K] {
return fn()[key];
}
// 示例用法
function getPerson() {
return {
name: '张三',
age: 30,
occupation: '工程师'
}
}
const nameType = getPropertyType(getPerson, 'name');
console.log(nameType); // 输出 string 类型
```
在这个例子中,我们定义了一个 `getPropertyType` 函数,它接受一个泛型函数 `fn` 和一个属性名称 `key`。然后使用 ReturnType 工具类型获取 `fn` 函数返回值的类型,并从中取出指定属性 `K` 的类型。
希望这个例子能够对您有所帮助!
相关问题
TS语言,假设一个函数,传入参数为buffer 类型为object,需要返回为字符串,如何实现 代码
可以使用Node.js中Buffer对象的toString()方法将Buffer对象转换为字符串。具体代码如下:
```typescript
function bufferToString(buffer: object): string {
return Buffer.from(buffer).toString();
}
```
在函数中,我们首先使用Buffer.from()方法将传入的buffer对象转换为Buffer对象,然后再使用toString()方法将Buffer对象转换为字符串,并将其作为函数的返回值。注意,这里的buffer参数类型为object,需要根据实际情况进行修改,以确保传入的参数符合要求。
TS语言,浏览器模式,不使用NODE.js buffer.from 假设一个函数,传入参数为buffer 类型为object,需要返回为字符串,如何实现 代码
在浏览器环境中,没有Node.js的Buffer对象可以使用,需要使用TypedArray来处理二进制数据。可以通过将传入的buffer对象转换为Uint8Array类型的TypedArray对象,再将其转换为字符串。具体代码如下:
```typescript
function bufferToString(buffer: object): string {
const uint8Array = new Uint8Array(buffer as ArrayBuffer);
return String.fromCharCode.apply(null, uint8Array);
}
```
在函数中,我们首先将传入的buffer对象强制转换为ArrayBuffer类型,然后使用Uint8Array构造函数创建一个新的Uint8Array对象,将其作为Uint8Array类型的TypedArray对象,并将其赋值给uint8Array变量。最后,我们使用String.fromCharCode.apply()方法将TypedArray对象转换为字符串,并将其作为函数的返回值。需要注意的是,这里的buffer参数类型为object,需要根据实际情况进行修改,以确保传入的参数符合要求。
阅读全文