2017-03-28 7 views
5

मेरी UserRouter परीक्षण में, मैं एक json फ़ाइलटाइपप्रति: TS7006: पैरामीटर 'xxx' परोक्ष एक 'कोई भी' प्रकार

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" 
    ] 
    }, 
    { 
    ... 
    } 
] 

उपयोग कर रहा हूँ मेरे ऐप का निर्माण किया है मैं निम्नलिखित टीएस त्रुटि मिलती है

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; 
+0

क्या आप हमें अपना 'tsconfig' दिखा सकते हैं? इसके रूप में आपके पास 'noImplicitAny' सक्षम है और यही कारण है कि त्रुटि उत्पन्न हुई है। –

उत्तर

13

आप --noImplicitAny का उपयोग कर रहे हैं और टाइपस्क्रिप्ट 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'); 
//... 
+1

अपने tsconfig.json में यह "noImplicitAny" जोड़ें: "compilerOptions" के लिए झूठा: {} यह काम करेगा –

1

मैं इस त्रुटि आई और पाया कि यह था क्योंकि "सख्त" पैरामीटर tsconfig.json फ़ाइल में सत्य पर सेट किया गया था। बस इसे "झूठा" (स्पष्ट रूप से) सेट करें। मेरे मामले में मैंने cmd प्रॉम्प्ट से tsconfig फ़ाइल जेनरेट की थी और बस "सख्त" पैरामीटर को याद किया, जो फ़ाइल में आगे स्थित था।

संबंधित मुद्दे