我输入了一个基本的迁移工具--一个具有up()
和down()
属性的对象。当提交迁移时,我保存了up()
函数返回的数据,然后将其作为参数传递给down()
函数,如下所示:
const myMigration: Migration<number[]> = {
async up() {
return [1, 2, 3];
},
async down(data) {
data.forEach(number => console.log(number)); // 1, 2, 3
},
};
到目前为止,我已经定义了迁移类型,如下所示:
type Migration<T = void> = {
up(): Promise<T>
down(data: T): Promise<void>
}
当前的问题是我必须显式地定义类型,但是我希望从等待的返回类型up()
中推断出down()
数据参数的类型。
以下是我的一些失败尝试:
一个二个一个一个
预期结果:
const myMigration: Migration = {
async up() {
return [1, 2, 3];
},
async down(data) {
// yay, type of data is inferred
data.forEach(number => console.log(number)); // 1, 2, 3
},
};
TypeScriptPlayground
2条答案
按热度按时间ezykj2lf1#
你可以使用一个可以推断类型的create函数,例如
Playground示例
x4shl7ld2#
看起来唯一的方法就是使用带有泛型参数的工厂。下面是一个例子: