从通用函数中的接口获取键
Get keys from interface in a generic function
我需要通过执行以下操作从接口获取类型,但我需要在函数内部执行。有没有办法使用打字稿泛型来做到这一点?
我需要传递请求主体的函数,以及指定它们类型的接口,并验证请求主体是否具有必要的项目以及正确的格式。
注意:我将 tsoa 与 express 一起使用,因此任何其他正确验证请求主体的库或技术都可以。
interface someInterface {
foo: string;
bar: number;
}
const testObject: someInterface = req.body;
verifyObject(testObject);
/*
ensure foo and bar are of correct type, length etc.
(I will verify types, I just need a way of
getting the interface keys in a reusable function.)
*/
function verifyObject<T>(obj: T): void {
class temp implements T {} // does not work
const keys = Object.keys(new temp());
// use keys
}
你几乎已经掌握了 - 制作了一个通用函数,所以它的参数将是接口的对象,并且访问对象的键是,好吧,你知道的:
function verifyObject<T>(obj: T): void {
const keys = Object.keys(obj);
}
verifyObject<someInterface>(someObj);
我需要通过执行以下操作从接口获取类型,但我需要在函数内部执行。有没有办法使用打字稿泛型来做到这一点?
我需要传递请求主体的函数,以及指定它们类型的接口,并验证请求主体是否具有必要的项目以及正确的格式。
注意:我将 tsoa 与 express 一起使用,因此任何其他正确验证请求主体的库或技术都可以。
interface someInterface {
foo: string;
bar: number;
}
const testObject: someInterface = req.body;
verifyObject(testObject);
/*
ensure foo and bar are of correct type, length etc.
(I will verify types, I just need a way of
getting the interface keys in a reusable function.)
*/
function verifyObject<T>(obj: T): void {
class temp implements T {} // does not work
const keys = Object.keys(new temp());
// use keys
}
你几乎已经掌握了 - 制作了一个通用函数,所以它的参数将是接口的对象,并且访问对象的键是,好吧,你知道的:
function verifyObject<T>(obj: T): void {
const keys = Object.keys(obj);
}
verifyObject<someInterface>(someObj);