Typescript 函数返回两个不同的对象
Typescript function returning two different objects
我对 TypeScript 还很陌生,我正在尝试弄清楚如何让它工作。
我做了一些广泛的谷歌搜索,但最终求助于 Stack Overflow。
我有一个函数可以根据某些条件 returns 用户对象或错误对象。
当我调用这个函数时,我似乎无法处理不同的情况而不会出现跟随错误。
Property 'error' does not exist on type 'User | Error'.
Property 'error' does not exist on type 'User'.ts(2339)
这是一些代码来演示我的目标,错误发生在 main()
函数中的 >>
。
interface User {
email: string;
username: string;
}
interface Error {
error: string;
code: number;
}
async function get_user_info(user_id: number): Promise<User | Error> {
const result = await db.get_user(user_id); // let's say this returns false if no user found..
if (result) {
const user: User = {
email: result.email,
username: result.username
}
return user;
} else {
const err: Error = {
error: "Failed to fetch user.",
code: 583
}
return err;
}
}
async function main() {
const res = await get_user_info(42);
>> if (res.error) {
// handle this...
} else {
// continue onwards...
}
}
我是不是遗漏了什么,或者这种事情是不可能的?
应用类型保护,通过检查 error
属性 是否存在来测试它是 User
还是 Error
对象:
async function main() {
const res = await get_user_info(42);
if ('error' in res) {
if (res.error) {
// handle this...
}
} else {
// continue onwards...
}
}
我对 TypeScript 还很陌生,我正在尝试弄清楚如何让它工作。 我做了一些广泛的谷歌搜索,但最终求助于 Stack Overflow。
我有一个函数可以根据某些条件 returns 用户对象或错误对象。 当我调用这个函数时,我似乎无法处理不同的情况而不会出现跟随错误。
Property 'error' does not exist on type 'User | Error'.
Property 'error' does not exist on type 'User'.ts(2339)
这是一些代码来演示我的目标,错误发生在 main()
函数中的 >>
。
interface User {
email: string;
username: string;
}
interface Error {
error: string;
code: number;
}
async function get_user_info(user_id: number): Promise<User | Error> {
const result = await db.get_user(user_id); // let's say this returns false if no user found..
if (result) {
const user: User = {
email: result.email,
username: result.username
}
return user;
} else {
const err: Error = {
error: "Failed to fetch user.",
code: 583
}
return err;
}
}
async function main() {
const res = await get_user_info(42);
>> if (res.error) {
// handle this...
} else {
// continue onwards...
}
}
我是不是遗漏了什么,或者这种事情是不可能的?
应用类型保护,通过检查 error
属性 是否存在来测试它是 User
还是 Error
对象:
async function main() {
const res = await get_user_info(42);
if ('error' in res) {
if (res.error) {
// handle this...
}
} else {
// continue onwards...
}
}