类型 'User | undefined' 不可分配给类型 'User'
Type 'User | undefined' is not assignable to type 'User'
用户控制器:
import { User } from './user';
export class UserController {
public static async getuser(ctx: BaseContext) {
const userRepository: Repository<User> = getManager().getRepository(User);
const user: User = await userRepository.findOne(ctx.params.id); // error on this line
if (user) {
ctx.status = 200;
ctx.body = user;
}
}
我收到一个错误:
error TS2322: Type 'User | undefined' is not assignable to type 'User'.
Type 'undefined' is not assignable to type 'User'.
user.ts 文件(我在上面导入的这个文件):
@Entity('users')
export class User {
@PrimaryGeneratedColumn()
id: number | undefined;
@Column({ type: 'varchar', nullable: true, unique: true })
username: string | undefined;
@Column({ type: 'text' })
password: string | undefined;
@CreateDateColumn()
createdAt: Date | undefined;
@UpdateDateColumn()
updatedAt: Date | undefined;
}
不知道如何解决这个问题。
如果没有找到用户,userRepository.findOne(ctx.params.id);
可能是 undefined
。两种解决方案:
将搜索视为失败:
const user: User | undefined = await userRepository.findOne(ctx.params.id);
或者认为将找到一个用户:
const user: User = await userRepository.findOne(ctx.params.id)!;
请注意,最后一个解决方案是强制转换,只有当您确定会找到用户时才这样做(在您的情况下我不这么认为)。
如错误所述,您正在尝试将类型 'User | undefined'(userRepository.findOne(),传递不存在的用户 ID 时的预期行为)分配给类型 'User'(常量用户)。
由于用户也可以是undefined,你必须把const user: User
改成const user: User | undefined
。
既然有
if (user) {
ctx.status = 200;
ctx.body = user;
}
紧接着,我猜 user 可能是未定义的。
用户控制器:
import { User } from './user';
export class UserController {
public static async getuser(ctx: BaseContext) {
const userRepository: Repository<User> = getManager().getRepository(User);
const user: User = await userRepository.findOne(ctx.params.id); // error on this line
if (user) {
ctx.status = 200;
ctx.body = user;
}
}
我收到一个错误:
error TS2322: Type 'User | undefined' is not assignable to type 'User'. Type 'undefined' is not assignable to type 'User'.
user.ts 文件(我在上面导入的这个文件):
@Entity('users')
export class User {
@PrimaryGeneratedColumn()
id: number | undefined;
@Column({ type: 'varchar', nullable: true, unique: true })
username: string | undefined;
@Column({ type: 'text' })
password: string | undefined;
@CreateDateColumn()
createdAt: Date | undefined;
@UpdateDateColumn()
updatedAt: Date | undefined;
}
不知道如何解决这个问题。
userRepository.findOne(ctx.params.id);
可能是 undefined
。两种解决方案:
将搜索视为失败:
const user: User | undefined = await userRepository.findOne(ctx.params.id);
或者认为将找到一个用户:
const user: User = await userRepository.findOne(ctx.params.id)!;
请注意,最后一个解决方案是强制转换,只有当您确定会找到用户时才这样做(在您的情况下我不这么认为)。
如错误所述,您正在尝试将类型 'User | undefined'(userRepository.findOne(),传递不存在的用户 ID 时的预期行为)分配给类型 'User'(常量用户)。
由于用户也可以是undefined,你必须把const user: User
改成const user: User | undefined
。
既然有
if (user) {
ctx.status = 200;
ctx.body = user;
}
紧接着,我猜 user 可能是未定义的。