2017-01-22 2 views
1

이 코드를 살펴 보겠습니다. TypeScript에서 오류가 있음을 감지 할 수 없습니다.TypeScript는 객체에 키가없는 경우 null 포인터를 감지 할 수 없습니다.

let map: { [key: string]: string } = {} 
map['key'].toUpperCase() 

해결 방법이 있습니까?

P.

그것은 정확히 내가 원하는 아니라,이 약간 다른 형태를

let map: { [key: string]: string | null } = {} 

있어하지만. 그

key may not exist, but if it exists it's a string 

을 지정하려면이 양식은 내가 더 나은 형태가 제안 것이다

key may not exist, but even if it exists, it could be a string or null 

답변

1

지정 Key is always accessible, and the value is string or undefined. 왜냐하면 이것은 자바 스크립트의 본질이 당신에게 줄 것이기 때문입니다.

그리고 당신은 T | undefined가 있음을 정의 할 수 있습니다 :

let map: { [key: string]: string | undefined } = {} 

var hopefullyString = map['key']; 
if (hopefullyString != undefined) 
    return hopefullyString.toUpperCase(); 

타이프 라이터가 건전한 형 시스템을했을 경우는이 컴파일러 구성에서 strictNullChecks -flag으로 활성화되었을 것이다. 그러나 일반적인 사용성을 위해 노력하면서, 그들은 여기 저기에 불건전 한 디자인 선택을합니다. 그리고 이것은 유감스럽게도 그러한 경우 중 하나입니다. 배경은 here입니다.

관련 문제