TypeScript λ²μ : 2.0.8
μνΈ
// test.ts
interface Type {
type: number;
}
interface TypeExt extends Type {
arr: Type[];
}
const guard = (arg: Type): arg is TypeExt => arg.type === 1;
const otherFunc = (arg1: Type, arg2: TypeExt): void => {};
export function y(arg: Type): void {
if (guard(arg)) {
for (const ITEM/* error is here */ of arg.arr) {
if (otherFunc(ITEM, arg)) {
}
}
}
}
cmdλ‘ μ»΄νμΌ λ¨ : tsc --noImplicitAny test.ts
μμλλ λμ :
μ€λ₯ μμ
μ€μ νλ :
test.ts(14,16): error TS7022: 'ITEM' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
μ΄κ²μ μ μ΄ νλ¦ λΆμ λ¬Έμ μ
λλ€. λν μ ν μΆλ‘ νκΈ° μν΄ ITEM
μ°λ¦¬μ μ μ΄ νλ¦ μ ν μμ λ΄μΌ arg.arr
. μ¦, arg
μ νμ μν₯μ λ―ΈμΉλ ꡬμ±μ μ΄ν΄ λ΄μΌν©λλ€. μ¬κΈ°μλ otherFunc
λν νΈμΆμ΄ ν¬ν¨λ©λλ€.μ΄ νΈμΆμ μ¬μ©μ μ μ μ ν μ μ΄ μΌ μ μμ΅λλ€. κ·Έκ²μ΄ μ ν μ μ΄μΈμ§ νμΈνκΈ° μν΄, μ°λ¦¬λ ITEM
μ νμ μμμΌνλ μΈμ ννμμ ν΄κ²°νλ νΈμΆ ννμμ ν΄κ²°ν©λλ€. μ΄λ‘ μΈν΄ ν΄κ²°ν μμλ μν μ±μ΄ μμ±λλ―λ‘ μμ μ any
μ νμΌλ‘ λμκ°λλ€.
μ ν μ μ΄ μΈμ λ Όλ¦¬κ° λ¨Όμ ν¨μ κ°μ²΄μ μ νμ νμΈνκ³ λͺ¨λ νΈμΆ μλͺ μ κ²μ¬νλλ‘νμ¬μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€. μ¬μ©μ μ μ μ ν μ μ΄κ°μλ κ²½μ° νΈμΆ μΈμ ννμμ ν΄κ²°νμ§ μκ³ μ‘°κΈ°μ ꡬμ ν μ μμΌλ―λ‘ μν μ±μ νΌν μ μμ΅λλ€.
ννΈ, otherFunc
νΈμΆμμ arg
μ κ΄νΈλ₯Ό μΆκ°νκΈ° λ§νλ©΄ μν μ±μ κΉ° μ μμ΅λλ€. μ¦, νΈμΆμ otherFunc(ITEM, (arg))
ν©λλ€. μ΄λ‘ μΈν΄ μ μ΄ νλ¦ λΆμκΈ°λ λ μ΄μ νΈμΆμ κ°λ₯ν μ¬μ©μ μ μ μ ν μ μ΄ νΈμΆλ‘ κ°μ£Όνμ§ μμ΅λλ€.
νν
κ΄νΈ ν΄κ²° λ°©λ²μ κ°μ¬λ립λλ€.
λλ μ΄κ²μ μμ λ΄κ³ μΆλ€. PRμ νμ©λμ§ μμ΅λκΉ?
@arusakov λ§μ€ν°μμ μμ νμΈμ!
κ°μ₯ μ μ©ν λκΈ
μ΄κ²μ μ μ΄ νλ¦ λΆμ λ¬Έμ μ λλ€. λν μ ν μΆλ‘ νκΈ° μν΄
ITEM
μ°λ¦¬μ μ μ΄ νλ¦ μ ν μμ λ΄μΌarg.arr
. μ¦,arg
μ νμ μν₯μ λ―ΈμΉλ ꡬμ±μ μ΄ν΄ λ΄μΌν©λλ€. μ¬κΈ°μλotherFunc
λν νΈμΆμ΄ ν¬ν¨λ©λλ€.μ΄ νΈμΆμ μ¬μ©μ μ μ μ ν μ μ΄ μΌ μ μμ΅λλ€. κ·Έκ²μ΄ μ ν μ μ΄μΈμ§ νμΈνκΈ° μν΄, μ°λ¦¬λITEM
μ νμ μμμΌνλ μΈμ ννμμ ν΄κ²°νλ νΈμΆ ννμμ ν΄κ²°ν©λλ€. μ΄λ‘ μΈν΄ ν΄κ²°ν μμλ μν μ±μ΄ μμ±λλ―λ‘ μμ μ any
μ νμΌλ‘ λμκ°λλ€.μ ν μ μ΄ μΈμ λ Όλ¦¬κ° λ¨Όμ ν¨μ κ°μ²΄μ μ νμ νμΈνκ³ λͺ¨λ νΈμΆ μλͺ μ κ²μ¬νλλ‘νμ¬μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€. μ¬μ©μ μ μ μ ν μ μ΄κ°μλ κ²½μ° νΈμΆ μΈμ ννμμ ν΄κ²°νμ§ μκ³ μ‘°κΈ°μ ꡬμ ν μ μμΌλ―λ‘ μν μ±μ νΌν μ μμ΅λλ€.
ννΈ,
otherFunc
νΈμΆμμarg
μ κ΄νΈλ₯Ό μΆκ°νκΈ° λ§νλ©΄ μν μ±μ κΉ° μ μμ΅λλ€. μ¦, νΈμΆμotherFunc(ITEM, (arg))
ν©λλ€. μ΄λ‘ μΈν΄ μ μ΄ νλ¦ λΆμκΈ°λ λ μ΄μ νΈμΆμ κ°λ₯ν μ¬μ©μ μ μ μ ν μ μ΄ νΈμΆλ‘ κ°μ£Όνμ§ μμ΅λλ€.