Tslint: 'any' μœ ν˜•μ˜ ν‘œν˜„μ‹μ„ μ•ˆμ „ν•˜μ§€ μ•Šκ²Œ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 01μ›” 05일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: palantir/tslint

버그 μ‹ κ³ 

  • __TSLint 버전__: 5.8.0
  • __TypeScript 버전__: 2.6.2
  • ____λ₯Ό 톡해 TSLint μ‹€ν–‰__: Node.js API

λ¦°νŠΈλ˜λŠ” TypeScript μ½”λ“œ

const json: {} | null | undefined = JSON.parse(queryData);

ꡬ성

{
    "defaultSeverity": "error",
    "extends": [
        "tslint:all"
    ],
    "rules": {
    }
}

μ‹€μ œ 행동

'any' μœ ν˜•μ˜ ν‘œν˜„μ‹μ„ μ•ˆμ „ν•˜μ§€ μ•Šκ²Œ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” 행동

const json: any = JSON.parse(queryData); μžˆμ§€λ§Œ κΈˆμ§€ κ·œμΉ™μ„ μœ μ§€ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
'any' μœ ν˜•μ˜ ν‘œν˜„μ‹μ„ μ•ˆμ „ν•˜μ§€ μ•Šκ²Œ μ‚¬μš©ν•˜μ§€ μ•Šκ³  JSON.parseλ₯Ό λ°˜ν™˜ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

Not A Bug

λͺ¨λ“  3 λŒ“κΈ€

μ—¬κΈ°μ„œ 무엇을 κΈ°λŒ€ν•˜κ³  μžˆλŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€... any ν•˜κ³  μ‹Άμ§€λ§Œ no-any κ·œμΉ™μ„ μœ μ§€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? 그것은 μ„œλ‘œ μ™„μ „νžˆ λͺ¨μˆœλ©λ‹ˆλ‹€. 쿼리 데이터에 λŒ€ν•΄ μΌμΉ˜ν•˜λŠ” μœ ν˜•μ„ μ„ μ–Έν•˜κ³  const json: YourType = JSON.parse(queryData); μˆ˜ν–‰ν•˜μ§€ λͺ»ν•˜λ„둝 ν•˜λŠ” 것은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚˜λŠ” λͺ…ν™•ν•˜μ§€ μ•Šμ•˜λ‹€
λ‚΄ λͺ©ν‘œλŠ” no-any κ·œμΉ™μ„ μœ μ§€ν•˜λŠ” 것이며 κ²½κ³  없이 JSON.parse(queryData)의 κ²°κ³Όλ₯Ό μ–»λŠ” 방법을 κ²€μƒ‰ν•©λ‹ˆλ‹€.

Fo μ§€κΈˆ json: any = JSON.parse(queryData); => ν•˜μ§€λ§Œ no-anyλ₯Ό λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.
λ‚΄κ°€ λ‹Ήμ‹ μ˜ μ†”λ£¨μ…˜μ„ν•œλ‹€λ©΄ : const json: YourType = JSON.parse(queryData);
그런 λ‹€μŒ μ•ˆμ „ν•˜μ§€ μ•Šμ€ λͺ¨λ“  κ·œμΉ™μ„ λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이것이 λ‚΄κ°€ 첫 번째 μ ‘κ·Ό λ°©μ‹μ—μ„œ μ‹œλ„ν•˜λŠ” μ΄μœ μž…λ‹ˆλ‹€. const json: {} | 널 | μ •μ˜λ˜μ§€ μ•ŠμŒ = JSON.parse(queryData); https://palantir.github.io/tslint/rules/no-unsafe-any/ => λ¬Έμ„œλ₯Ό 보면 no-unsafe-any 및 no any κ²½κ³ κ°€ μ—†μŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ JSON.parseλŠ” λ¬Έμžμ—΄κ³Ό 같은 λ‹€λ₯Έ μœ ν˜•λ„ λ°˜ν™˜ν•  수 μžˆμœΌλ―€λ‘œ 이 μ†”λ£¨μ…˜μ€ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” μ‹€μ œλ‘œ 해결책이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ μ „λ¬Έκ°€μ—κ²Œ λ¬Όμ–΄λ³΄λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€.

@ohrrkan κ·€ν•˜μ˜ μ‚¬μš© μ‚¬λ‘€λŠ” 쒋은 μ‚¬λ‘€μž…λ‹ˆλ‹€. 일반적으둜 μ‚¬λžŒλ“€μ΄ ν•˜λŠ” 일은 JSON.parse(queryData) as MyType μž…λ‹ˆλ‹€. TSLint μΈ‘μ—μ„œ μ‘°μΉ˜μ— λŒ€ν•œ μš”κ΅¬κ°€ λ§Žμ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— ν˜„μž¬λ‘œμ„œλŠ” 이것을 μ‹€ν–‰ λΆˆκ°€λŠ₯으둜 λ‹«μŠ΅λ‹ˆλ‹€. 도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰