输入“用户| 未定义”不可分配给类型“用户”

Ale*_*Kim 4 typescript koa

用户控制器:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

错误 TS2322:键入“用户 | undefined' 不可分配给类型'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;
}
Run Code Online (Sandbox Code Playgroud)

无法弄清楚如何解决这个问题。

jpe*_*erl 5

正如错误所示,您正在尝试分配类型“User | undefined'(userRepository.findOne(),传递不存在的用户 ID 时的预期行为)来键入“User”(常量用户)。

由于 user 也可以是未定义的,因此您必须更改const user: Userconst user: User | undefined.

既然有

if (user) {
    ctx.status = 200;
    ctx.body = user;
  }
Run Code Online (Sandbox Code Playgroud)

之后,我猜用户可能是未定义的。