“.d.ts”文件,如何将 Promise 结果声明为函数的结果
".d.ts" Files, how to declare Promise result as result of a Function
我编写了一个小的异步函数来帮助我return将 Promises 结果作为两个元素的数组。
我的职能是
/* will.js */
const will = async (result) => {
try {
const result = await funcResult;
return [null, result];
}
catch (err) {
return [err, null];
}
}
export default will;
/* any-file.js */
import will from './will';
function someFunction() {
const [err, data] = await will(someFetch());
if (err) {
throw err;
}
// ecc. ecc.
}
我正在尝试编写相关 .d.ts
文件。传递给 will
的函数总是 return 一个在不同时间解析的 Promise:有时会在 string
中解析,有时会在 boolean
中解析...在那种情况下它不是很大问题,但是如果我将通过 mongoose
查询执行(例如),我希望 will
函数将 return 一个在 MongooseDocument
中解析的 Promise 以实现代码完成正确。
如
const [findUserError, user] = await will(User.findOne({ email }).exec());
// From this point i would like
// user variable is `MongooseDocument` type
// as the return value of User.findOne({ email }).exec()
// is `Promise<MongooseDocument>`
我是 .d.ts
文件的新手,我试着简单地写
declare function will(result: Promise<T>): Promise<[any, T]>
export default will
但是显然不行...
有人可以帮助我吗?
谢谢
创建时 generics 需要定义 Generic 键,当使用函数执行此操作时,可以在函数名称之后定义它。在这种情况下 will<T>
.
declare function will<T>(result: Promise<T>): Promise<[any, T]>
对于 class 也是如此,例如 MyClass<T>
declare class MyClass<T> {
myMethod<A>(param: T): Promise<A>
}
当泛型是一个对象并且可以是多种类型时,您可以使用扩展基础对象的扩展。
declare class Base {}
declare class A extends Base {}
declare class B extends Base {}
declare class Handler<T extends Base> {
addItem(item: T): void
}
我编写了一个小的异步函数来帮助我return将 Promises 结果作为两个元素的数组。
我的职能是
/* will.js */
const will = async (result) => {
try {
const result = await funcResult;
return [null, result];
}
catch (err) {
return [err, null];
}
}
export default will;
/* any-file.js */
import will from './will';
function someFunction() {
const [err, data] = await will(someFetch());
if (err) {
throw err;
}
// ecc. ecc.
}
我正在尝试编写相关 .d.ts
文件。传递给 will
的函数总是 return 一个在不同时间解析的 Promise:有时会在 string
中解析,有时会在 boolean
中解析...在那种情况下它不是很大问题,但是如果我将通过 mongoose
查询执行(例如),我希望 will
函数将 return 一个在 MongooseDocument
中解析的 Promise 以实现代码完成正确。
如
const [findUserError, user] = await will(User.findOne({ email }).exec());
// From this point i would like
// user variable is `MongooseDocument` type
// as the return value of User.findOne({ email }).exec()
// is `Promise<MongooseDocument>`
我是 .d.ts
文件的新手,我试着简单地写
declare function will(result: Promise<T>): Promise<[any, T]>
export default will
但是显然不行...
有人可以帮助我吗?
谢谢
创建时 generics 需要定义 Generic 键,当使用函数执行此操作时,可以在函数名称之后定义它。在这种情况下 will<T>
.
declare function will<T>(result: Promise<T>): Promise<[any, T]>
对于 class 也是如此,例如 MyClass<T>
declare class MyClass<T> {
myMethod<A>(param: T): Promise<A>
}
当泛型是一个对象并且可以是多种类型时,您可以使用扩展基础对象的扩展。
declare class Base {}
declare class A extends Base {}
declare class B extends Base {}
declare class Handler<T extends Base> {
addItem(item: T): void
}