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
'programing' 카테고리의 다른 글
| 봄 MVC 패치 방식: 부분 업데이트 (0) | 2023.03.06 |
|---|---|
| Newtonsoft 개체 → JSON 문자열 가져오기 (0) | 2023.03.06 |
| Wordpress - 메뉴 항목에 하위 항목이 있는지 어떻게 알 수 있습니까? (0) | 2023.03.06 |
| Angular.noop은 무엇에 사용됩니까? (0) | 2023.03.06 |
| 각도 키 값 파이프 정렬 속성/순서대로 반복 (0) | 2023.03.06 |