객체를 정의하려고합니다. MDN이 말한 것처럼 기호가 키 유형으로 .
심볼 값은 객체 속성에 대한 식별자로 사용될 수 있습니다 [...]
그러나 키 속성의 유형으로 사용하십시오.
type obj = {
[key: symbol | string]: string
}
다음과 같은 오류가 발생합니다.
TS1023 : 색인 서명 매개 변수 유형은 'string'또는 'number'여야합니다.
심지어는 수 인덱스 형으로 사용 될 수있다. 최신 Typescript 버전 ( v3.7.2
)을 사용하고 있습니다. 관련 질문 :
- 타이프 라이터가 : 키와 같은 기호 객체를 destructuring (그는 기호의 실제 인스턴스를 사용하고, 내가 원하는 타입
symbol
) - TypeScript : 문자열을 사용하려고 할 때 색인 서명 매개 변수는 'string'또는 'number'여야합니다. 번호
- ES6 : 심볼을 키로 사용하여 객체를 파괴하는 것 (솔루션은 될 수 없습니다-모든 Symbol 인스턴스가 고유하기 때문에 실제 인스턴스를 유형으로 사용하는 것은 다소 잘못된 것 같습니다 ...)
또한 typescript 기호 문서를 살펴 보았지만 유형이 아닌 값으로 사용되는 방법 만 보여줍니다.
예:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
@ Bergi 예를 추가했습니다. 어쩌면 뭔가를 감독했지만 기호를 허용하도록 ts를 가져올 수있는 방법을 찾을 수 없습니다 (
—
Simon
any
나쁜 연습 을 사용하지 않고 ).
올바른지 확실하지 않지만
—
pavan kumar
Map<Symbol,String>
Map이있는 상태에서 사용하려고 한다면, 달성하려는 목적을 달성 할 수 있다면
나에게도 같은 문제는 짜증나는 부분이 "TS가 JS의 수퍼 셋"이라는 잘못된 광고라고 생각한다. 이것은 그 완벽한 예입니다.
—
패트릭
symbol
? 어쩌면 당신이 어떻게 사용하고 싶은지에 대한 예를 보여줄 수 있습니다type obj
-나는 모든 심볼 키 속성이string
s 가 될지 의심합니다 .