사용자 도구

사이트 도구


typescript:symbol

문서의 이전 판입니다!


Symbol

Introduction

ECMAScript 2015에서부터 symbolnumberstring과 같은 기본 데이타 타입(primitive data type)이다.

symbol값들은 Symbol이라는 생성자를 호출하여 생성된다.

let sym1 = Symbol();
let sym2 = Symbol("key"); // string "key"는 optional입니다.

Symbol은 변경 불가능하며 고유합니다.

let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, symbols are unique

string과 마찬가지로 symbol을 객체 프로퍼티의 키로 사용할 수 있습니다.

let sym = Symbol();
let obj = {
    [sym]: "value"
};
 
console.log(obj[sym]); // "value"

Symbol을 계산된 프로퍼티 선언과 결합하여 객체 프로퍼티와 클래스 멤버를 선언할 수도 있습니다.

const getClassNameSymbol = Symbol();
class C {
    [getClassNameSymbol](){
       return "C";
    }
}
let c = new C();
let className = c[getClassNameSymbol](); // "C"

잘 알려진 Symbol

사용자 정의 Symbol 외에도 잘 알려진 내장 Symbol이 있습니다. 내장 Symbol는 언어 내부 동작을 나타내는 데 사용됩니다.

다음은 잘 알려진 Symbol 목록입니다.

Symbol.hasInstance 생성자 객체가 생성자의 인스턴스 중 하나로서 객체를 인식하는지 여부를 결정하는 메서드입니다. instanceof 연산자의 의미에 의해 호출됩니다.

Symbol.isConcatSpreadable 객체가 Array.prototype.concat에 의해 배열 요소로 병합되어야 함을 나타내는 부울 값입니다.

Symbol.iterator 객체의 기본 반복자를 반환하는 메서드입니다. for-of 구문의 의미에 의해 호출됩니다.

Symbol.match 문자열과 비교하는 정규 표현식 메서드입니다. String.prototype.match 메서드에 의해 호출됩니다.

Symbol.replace 일치하는 문자열의 부분 문자열을 대체하는 정규 표현식 메서드입니다. String.prototype.replace 메서드에 의해 호출됩니다.

Symbol.search 일치하는 문자열 내에서 인덱스를 반환하는 정규 표현식 메서드입니다. String.prototype.search 메서드에 의해 호출됩니다.

Symbol.species 파생된 객체를 만드는 데 사용되는 생성자 함수의 함수값을 갖는 프로퍼티입니다.

Symbol.split 일치하는 인덱스에서 문자열을 분할하는 정규 표현식 메서드입니다. String.prototype.split 메서드에 의해 호출됩니다.

Symbol.toPrimitive 객체에 대응하는 Primitive로 변환하는 메소드입니다. ToPrimitive 추상 동작에 의해 호출됩니다.

Symbol.toStringTag 객체의 기본 문자열 Tag를 만드는데 사용되는 String 값입니다. 내장 메소드 Object.prototype.toString에 의해 호출됩니다.

Symbol.unscopables 자신의 프로퍼티 명을 가지는 객체는 관련된 객체의 ‘with’ 환경 바인딩에서 제외되는 속성 이름입니다.

typescript/symbol.1564445470.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)