이 노트는 basarat의 answer에 관한 것으로,하지 원래 질문. 컴파일러는이 코드의 상당을 사용하여 "컬러로 문자열을 변환 할 수 없습니다"거의 비슷 오류를주고 있었다 곳
나는 내 자신의 프로젝트에 이상한 문제가 있었다 :
var colorId = myOtherObject.colorId; // value "Green";
var color: Color = <Color>Color[colorId]; // TSC error here: Cannot convert string to Color.
내가 발견 컴파일러 유형 추론이 혼란스러워지고 colorId
은 ID가 아닌 enum 값이라고 생각했습니다. 내가 문자열로 ID를 캐스팅했다 문제를 해결하려면 :
var colorId = <string>myOtherObject.colorId; // Force string value here
var color: Color = Color[colorId]; // Fixes lookup here.
내가 문제의 원인을 모르겠어요를하지만 난 여기에이 메모를 남겨 것이다 경우에 누군가가 내가 한 동일한 문제로 실행됩니다.
두 단어 : : 그냥 끝내 :) –
이 --noImplicitAny''작동하지 않습니다 (VS의 검사되지 않은 "허용 Color) [녹색];'(버전 1.4로 테스트 됨) –
Vojta
keyof typeof
사용 가능한 문자열 키에 대한 정보 (1를) 가져 오는 데 사용됩니다 암시적인 '모든 유형'). 그것은 오류 TS7017 : 객체 유형의 색인 서명이 암시 적으로 'any'유형을가집니다. 내 작품 :'var color : Color = (@Voja 권리. 그 VS 2012에서 작동하지 않습니다.이 하나의 일하지만 var 색상 : 색상 = ( 색상) [녹색]; –