تايبسكريبت: TS7006: المعامل 'xxx' له نوع 'any' ضمنيًا


في اختبار جهاز التوجيه الخاص بالمستخدم الخاص بي، أنا أستخدم ملف 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;

الإجابة رقم 1

أنت تستخدم --noImplicitAny و TypeScript لا يعرف نوع كائن Users. في هذه الحالة، تحتاج إلى تحديد نوع user بشكل صريح.

غيّر هذا السطر:

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

إلى هذا:

let user = Users.find((user: any) => user.id === query); 
// use "any" or some other 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');
//...

الإجابة رقم 2

في ملف tsconfig.json الخاص بك، قم بتعيين المعامل "noImplicitAny": false تحت compilerOptions للتخلص من هذا الخطأ.

الإجابة رقم 3

قم بإجراء هذه التغييرات في قسم compilerOptions من ملف tsconfig.json هذا نجح معي

"noImplicitAny": false

لا حاجة للتعيين

"strict":false

ورجاءً انتظر دقيقة أو دقيقتين، فالترجمة بطيئة جدًا على بعض أجهزة الكمبيوتر

الإجابة رقم 4

لقد وجدت هذه المشكلة في Angular مع وسائط الدالة.

قبل أن يعطي رمزي خطأ

المعامل 'event' له نوع 'any' بشكل ضمني

ها هو الكود

changeInpValue(event)
{
    this.inp = event.target.value;
}

إليك التغيير، بعد الوسيط اكتب : any وتم حل الخطأ

changeInpValue(event : any)
{
    this.inp = event.target.value;
}

يعمل بشكل جيد بالنسبة لي.

الإجابة رقم 5

إذا حصلت على خطأ مثل المعلمة 'element' لها نوع 'any' ضمنيًا. Vetur(7006) في vueJs

مع الخطأ:

 exportColumns.forEach(element=> {
      if (element.command !== undefined) {
        let d = element.command.findIndex(x => x.name === "destroy");

يمكنك إصلاحها عن طريق تعريف تلك المتغيرات كـ any كما يلي.

الكود المصحح:

exportColumns.forEach((element: any) => {
      if (element.command !== undefined) {
        let d = element.command.findIndex((x: any) => x.name === "destroy");