TypeScript 진 향 시리즈 - 매 거

머리말
TypeScript 진 향 시리즈 의 내용 은 참고 중국어 문서 할 것 입 니 다. 그러나 글 의 예 는 문서 의 예 와 중복 되 지 않 고 일부 지역 에 대해 서도 깊이 연구 할 것 입 니 다.또한, 글 의 일부 예 결 과 는 코드 가 잘못 되 지 않 은 후에 자바 스 크 립 트 로 컴 파일 되 어 얻 은 것 이다.TypeScript 가 JavaScript 로 컴 파일 된 코드 를 실제로 보 려 면 TypeScript 온라인 컴 파일 주소 에 방문 하여 조작 할 수 있어 더욱 인상적 입 니 다.
콘 셉 트
매 거 진 것 은 JavaScript 표준 데이터 형식 집합 에 대한 확장 으로 일정한 범위 내 에서 값 을 추출 하 는 장면 에 한정 되 어 있 습 니 다.TypeScript 에서 숫자 와 문자열 의 매 거 진 을 지원 합 니 다.우 리 는 enum 으로 실현 할 수 있다.
숫자 매 거
먼저 숫자 개의 예 를 들 어 보 자.
enum Basketballer{ 
    Yao,
    Yi,
    Wang
}
Basketballer.Yao; //0
Basketballer.Yi;  //1
Basketballer.Wang;  //2

우리 도 이렇게 할 수 있다. 아래 의 이 방법 은 역방향 맵 이 라 고 불 린 다. 즉, 값 을 통 해 키 에 접근 하 는 것 이다.
Basketballer[0]; //"Yao"
Basketballer[1]; //"Yi"
Basketballer[2]; //"Wang"
Basketballer[3]; //undefined

위의 예 에서 저 희 는 Yao 나 다른 멤버 들 을 초기 화하 지 않 았 습 니 다. 만약 에 저희 가 초기 화 를 하면:
enum Basketballer{ 
    Yao = 1,
    Yi,
    Wang
}
Basketballer.Yao; //1
Basketballer.Yi;  //2
Basketballer.Wang;  //3
Basketballer[1];  //"Yao"
Basketballer[2];  //"Yi"
Basketballer[3];  //"Wang"

위 에서 알 수 있 듯 이 한 멤버 가 하나의 값 을 설정 하면 뒤의 해당 값 이 점점 증가한다.그러나 특별한 목적 이 없다 면 여러 멤버 에 게 수 동 할당 을 하지 않 는 것 이 중요 하 다.가끔 문제 가 생 길 수 있 기 때문이다.
enum Basketballer{ 
    Yao = 1,
    Yi,
    Wang = 2,
    Zhu,
    Zhou,
}
Basketballer[2]; //"Wang"
Basketballer.Yi; //2

매 거 진 간단 한 응용 프로그램:
enum Basketballer{ 
    Yao = 1,
    Yi,
    Wang,
    Zhu,
    Zhou,
}

function one(arg: Basketballer): string{
    let num = arg;
    switch (num) {
        case 1:
            return Basketballer[num] + "   ";
        case 2:
            return Basketballer[num] + "   ";
        case 3:
            return Basketballer[num] + "   ";
        default:
            return "  ";
    }
}
one(1); //"Yao   "
one(6); // "   "
one("1"); //  ,“1”          Basketballer

숫자 매 거 에서 우 리 는 매 거 진 구성원 의 값 을 정의 할 때 상수 일 수도 있 고 계산 할 수도 있다.
매 거 멤버 값 상수
1. 매 거 진 첫 번 째 멤버 가 초기 화 되 지 않 았 습 니 다.
enum Basketballer{ 
    Yao
}
Basketballer.Yao; //0

2. 초기 화 기 를 가지 고 있 지 않 으 며 이전 멤버 는 숫자 상수 입 니 다.
enum Basketballer1{ 
    Yao,  //0
    Yi,   //1
    Wang  //2 
}

enum Basketballer2{ 
    Yao = 1,  //1
    Yi,       //2
    Wang     //3 
}

3. 매 거 진 구성원 들 은 상수 매 거 진 표현 식 을 사용 하여 초기 화 합 니 다.다음 조건 이 그 중 하 나 를 만족 시 키 면 상수 매 거 진 표현 식 입 니 다. 매 거 진 표현 식 의 글자 수 (주로 문자열 의 글자 수 나 숫자 글자 수) 입 니 다.
enum Man{ a = 1}

이전에 정 의 된 상수 매 거 진 구성원 에 대한 인용 (서로 다른 매 거 진 형식 에서 정의 할 수 있 습 니 다)
enum Man{ a = 1, b = 2*a}

괄호 가 있 는 상수 매 거 식
enum Man{ a = 1, b = 2*(a +1)}

1 원 연산 자 +, -, 그 중 하 나 는 상수 매 거 진 표현 식 에 사용 되 었 습 니 다.
enum Man{ a = 1, b= ~a}

상수 매 거 식 은 이원 연산 자 +, -, *, /,%, < > >, &, |, ^ 의 조작 대상 으로 합 니 다.상수 매 거 진 표현 식 이 값 을 구 한 후에 NaN 이나 Infinity 이면 컴 파일 단계 에서 오 류 를 보고 합 니 다.
enum Man{ a = 1 << 2}

매 거 구성원 값 을 계산 값 으로 하 다.
위 에서 열거 한 모든 매 거 진 구성원 을 제외 하고 계산 해 야 할 값 으로 여 겨 집 니 다.
enum Man{ a = "abc".length }

문자열 매 거
문자열 매 거 진 에는 자체 적 으로 증가 하 는 특성 이 없습니다. 초기 화 할 때 모든 구성원 에 게 문자열 을 설정 해 야 합 니 다.
enum Basketballer{ 
    Yao = "    ",
    Yi = "  ",
    Wang = "   ",
}
Basketballer.Yao; //"    "

그러나 문자열 매 거 진 에는 역방향 맵 이 없습니다:
Basketballer["    "]; //   

이성적으로 열거 하 다.
이 구 조 는 숫자 매 거 와 문자열 매 거 의 결합 체 에 해당 하지만 공식 문 서 는 이렇게 쓰 는 것 을 권장 하지 않 습 니 다.
enum Basketballer{ 
    Yao = "    ",
    Yi = 1,
}

const 매 거
현재 매 거 진 형식 을 const 수식 자 를 통 해 강조 할 수 있 습 니 다. const 매 거 진 은 상수 매 거 진 표현 식 만 사용 할 수 있 고 컴 파일 단계 에서 삭 제 됩 니 다.우 리 는 const enum 으로 정의 할 수 있 습 니 다.
const enum Man {
    A,
    B,
    C,
    D
}
let man = [Man.A, Man.B, Man.C, Man.D];
console.log(man); // [0, 1, 2, 3]

컴 파일 결 과 를 봅 시다.
let man = [0 /* A */, 1 /* B */, 2 /* C */, 3 /* D */];
console.log(man); // [0, 1, 2, 3]

외부 매 거
외부 매 거 진 은 이미 존재 하 는 매 거 진 형식의 모양 을 설명 하 는 데 사 용 됩 니 다. declare enum 으로 정의 할 수 있 습 니 다.
declare enum Man {
    A,
    B,
    C,
    D
}
let man = [Man.A, Man.B, Man.C, Man.D];

컴 파일 결 과 를 봅 시다.
let man = [Man.A, Man.B, Man.C, Man.D];

레 퍼 런 스
https://github.com/zhongsp/Ty... https://github.com/jkchao/typ...
마지막.
글 중 일 부 는 자신의 이 해 를 넣 을 수 있 습 니 다. 부정 확 하거나 잘못된 부분 이 있 으 면 지적 해 주 십시오 ~

좋은 웹페이지 즐겨찾기