Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 类型';用户|未定义';不可分配给类型';用户';_Typescript_Koa - Fatal编程技术网

Typescript 类型';用户|未定义';不可分配给类型';用户';

Typescript 类型';用户|未定义';不可分配给类型';用户';,typescript,koa,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(

用户控制器:

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;
  }
}

无法确定如何修复此问题。

userRepository.findOne(ctx.params.id)可能是未定义的。两种解决方案:

将搜索视为faillible:

const user:user | undefined=wait userRepository.findOne(ctx.params.id);

或认为用户将被发现:

const user:user=wait userRepository.findOne(ctx.params.id)!;

请注意,最后一个解决方案是一个强制转换,只有在您确信会找到用户(在您的情况下,我不这么认为)时才执行此操作。

正如错误所述,您试图将类型“User | undefined”(userRepository.findOne(),传递不存在的用户id时的预期行为)分配给类型“User”(const User)

由于用户也可以是未定义的,因此必须将
const user:user
更改为
const user:user |未定义的

既然有

if (user) {
    ctx.status = 200;
    ctx.body = user;
  }

紧接着,我猜用户可以是未定义的。

似乎是
userRepository。findOne
返回未定义,我会看看methodconst user:user | undefined?^或者,如果未定义预期第二个解决方案没有效果,它仍然会抱怨,正如Jay Perl所说,第一个解决方案很难。
if (user) {
    ctx.status = 200;
    ctx.body = user;
  }