Development Tip

Typescript : TS7006 : 매개 변수 'xxx'에는 암시 적으로 'any'유형이 있습니다.

yourdevel 2020. 10. 9. 12:27
반응형

Typescript : TS7006 : 매개 변수 'xxx'에는 암시 적으로 'any'유형이 있습니다.


UserRouter를 테스트 할 때 json 파일을 사용하고 있습니다.

data.json

[
  {
    "id": 1,
    "name": "Luke Cage",
    "aliases": ["Carl Lucas", "Power Man", "Mr. Bulletproof", "Hero for Hire"],
    "occupation": "bartender",
    "gender": "male",
    "height": {
      "ft": 6,
      "in": 3
    },
    "hair": "bald",
    "eyes": "brown",
    "powers": [
      "strength",
      "durability",
      "healing"
    ]
  },
  {
  ...
  }
]

내 앱을 빌드 할 때 다음 TS 오류가 발생합니다.

ERROR in ...../UserRouter.ts
(30,27): error TS7006: Parameter 'user' implicitly has an 'any' type.

UserRouter.ts

import {Router, Request, Response, NextFunction} from 'express';
const Users = require('../data');

export class UserRouter {
  router: Router;

  constructor() {
  ...
  }

  /**
   * GET one User by id
   */
  public getOne(req: Request, res: Response, _next: NextFunction) {
    let query = parseInt(req.params.id);
 /*[30]->*/let user = Users.find(user => user.id === query);
    if (user) {
      res.status(200)
        .send({
          message: 'Success',
          status: res.status,
          user
        });
    }
    else {
      res.status(404)
        .send({
          message: 'No User found with the given id.',
          status: res.status
        });
    }
  }


}

const userRouter = new UserRouter().router;
export default userRouter;

을 사용하고 --noImplicitAny있으며 TypeScript는 Users객체 유형에 대해 모릅니다 . 이 경우 user유형 을 명시 적으로 정의해야 합니다.

이 줄을 변경하십시오.

let user = Users.find(user => user.id === query);

이를 위해 :

let user = Users.find((user: any) => user.id === query); 
// use "any" or someother interface to type this argument

또는 Users개체 유형을 정의 합니다.

//...
interface User {
    id: number;
    name: string;
    aliases: string[];
    occupation: string;
    gender: string;
    height: {ft: number; in: number;}
    hair: string;
    eyes: string;
    powers: string[]
}
//...
const Users = <User[]>require('../data');
//...

당신의에서 tsconfig.json파일 파라미터 설정 "noImplicitAny": false에서 compilerOptions이 오류를 제거 할 수 있습니다.


I encounted this error and found that it was because the "strict" parameter was set to true in the tsconfig.json file. Just set it "false" (obviously). In my case I had generated the tsconfig file from the cmd prompt and simply missed the "strict" parameter, which was located further down in the file.

참고URL : https://stackoverflow.com/questions/43064221/typescript-ts7006-parameter-xxx-implicitly-has-an-any-type

반응형