如何对 then() 的参数进行类型检查
How to typecheck arguments to then()
在下面的函数中,Promise 解析为 1
,因此 typeof astring === 'number'
。但是,对于 strictFunctionTypes
,我没有收到 number
与 astring: string
冲突的警告,而是看到 Type '{}' is not assignable to type 'string'
.
如何改进提供给 then()
的函数的类型检查?
function test(): Promise<string> {
return new Promise((resolve, reject) => {
resolve(1);
})
.then((astring: string) => {
return 'string';
})
}
您需要将类型参数指定为Promise
,Typescript 不会根据resolve
的用法推断return promise 的类型将是number
:
function test(): Promise<string> {
return new Promise<number>((resolve, reject) => {
resolve(1);
})
.then((nr: number) => {
return 'string';
})
}
//error
function test2(): Promise<string> {
return new Promise<number>((resolve, reject) => {
resolve(1);
})
.then((nr: string) => {
return 'string';
})
}
在下面的函数中,Promise 解析为 1
,因此 typeof astring === 'number'
。但是,对于 strictFunctionTypes
,我没有收到 number
与 astring: string
冲突的警告,而是看到 Type '{}' is not assignable to type 'string'
.
如何改进提供给 then()
的函数的类型检查?
function test(): Promise<string> {
return new Promise((resolve, reject) => {
resolve(1);
})
.then((astring: string) => {
return 'string';
})
}
您需要将类型参数指定为Promise
,Typescript 不会根据resolve
的用法推断return promise 的类型将是number
:
function test(): Promise<string> {
return new Promise<number>((resolve, reject) => {
resolve(1);
})
.then((nr: number) => {
return 'string';
})
}
//error
function test2(): Promise<string> {
return new Promise<number>((resolve, reject) => {
resolve(1);
})
.then((nr: string) => {
return 'string';
})
}