programing

TypeScript 또는 JavaScript 유형 캐스팅

newnotes 2023. 3. 6. 21:28
반응형

TypeScript 또는 JavaScript 유형 캐스팅

TypeScript나 Javascript에서는 타입 캐스팅을 어떻게 처리합니까?

다음과 같은 TypeScript 코드가 있다고 가정합니다.

module Symbology { 

    export class SymbolFactory { 

        createStyle( symbolInfo : SymbolInfo) : any { 
            if (symbolInfo == null)
            {
                 return null;
            }

            if (symbolInfo.symbolShapeType === "marker") {      

                // how to cast to MarkerSymbolInfo          
                return this.createMarkerStyle((MarkerSymbolInfo) symbolInfo);
            }                                  
        }

        createMarkerStyle(markerSymbol : MarkerSymbolInfo ): any { 
            throw "createMarkerStyle not implemented";
        }              

    }
}

어디에SymbolInfo는 베이스 클래스입니다.에서 타이프 캐스팅을 처리하는 방법SymbolInfo로.MarkerSymbolInfoTypeScript 또는 Javascript에 포함됩니까?

다음과 같이 캐스팅할 수 있습니다.

return this.createMarkerStyle(<MarkerSymbolInfo> symbolInfo);

tsx 모드와 호환성을 원하는 경우 다음과 같이 하십시오.

return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo);

이것은 런타임 캐스트가 아닌 컴파일 타임 캐스트임을 기억하십시오.

이것은 TypeScript에서는 type assertion이라고 불리며 TypeScript 1.6 이후로는 다음 두 가지 방법으로 표현할 수 있습니다.

// Original syntax
var markerSymbolInfo = <MarkerSymbolInfo> symbolInfo;

// Newer additional syntax
var markerSymbolInfo = symbolInfo as MarkerSymbolInfo;

두 가지 대안은 모두 기능적으로 동일합니다.를 도입하는 이유as-syntax는 원래 구문이 JSX와 경합하는 것입니다.설계에 대한 자세한 내용은 여기를 참조하십시오.

선택할 수 있는 입장이면 보다 편한 구문을 사용하십시오.저는 개인적으로as- 읽고 쓰는 것이 더 유창하게 느껴지기 때문에.

타이프스크립트에서는 다음 작업을 수행할 수 있습니다.instanceofif 스테이트먼트에 체크인을 하면 같은 변수에 액세스 할 수 있습니다.Typed특성.

예를 들어MarkerSymbolInfo라고 불리는 속성이 있습니다.marker다음 작업을 수행할 수 있습니다.

if (symbolInfo instanceof MarkerSymbol) {
    // access .marker here
    const marker = symbolInfo.marker
}

변수를 다른 변수 이름으로 재할당하지 않고 동일한 변수를 사용하여 변수의 인스턴스를 가져오는 것은 매우 유용한 방법입니다.

상세한 것에 대하여는, 다음의 2개의 자원을 확인해 주세요.

TypeScript 인스턴스JavaScript 인스턴스

언급URL : https://stackoverflow.com/questions/13204759/typescript-or-javascript-type-casting

반응형