source

TypeScript: 빈 유형의 컨테이너 어레이 생성

factcode 2022. 9. 23. 00:04
반응형

TypeScript: 빈 유형의 컨테이너 어레이 생성

저는 TypeScript에서 "Three of a Crime"라는 간단한 논리 게임을 만들고 있습니다.

TypeScript에서 입력된 어레이를 미리 할당하려고 할 때 다음과 같은 작업을 수행하려고 했습니다.

var arr = Criminal[];

Check format of expression term 오류가 발생하였습니다.

이것도 해보려고 했는데

var arr : Criminal = [];

그 결과, 「어떤 것도 「범죄」로 변환할 수 없다」

이를 위한 'TypeScript' 방법은 무엇입니까?

기존 답변이 옵션을 놓쳤기 때문에 전체 목록은 다음과 같습니다.

// 1. Explicitly declare the type
var arr: Criminal[] = [];

// 2. Via type assertion
var arr = <Criminal[]>[];
var arr = [] as Criminal[];

// 3. Using the Array constructor
var arr = new Array<Criminal>();
  1. 변수 선언에 대해 유형 추론이 실패할 때마다 유형을 명시적으로 지정하는 것이 일반적인 솔루션입니다.

  2. 유형 어설션(캐스트라고도 하지만 TypeScript에서는 실제로 캐스트가 아님)을 사용하는 이점은 모든 식에 적용되므로 변수가 선언되지 않은 경우에도 사용할 수 있습니다.유형 어설션에는 두 가지 구문이 있지만, 이 구문에 관심이 있을 경우 JSX와 조합하여 사용할 수 있는 것은 후자뿐입니다.

  3. 어레이 컨스트럭터를 사용하는 것은 이 특정 사용 사례에서만 도움이 되지만 개인적으로 가장 읽기 쉽다고 생각합니다.다만, 실행시에는 퍼포먼스에 약간의 영향이 있습니다*.또한 어레이 컨스트럭터를 재정의할 정도로 미친 사람이 있다면 그 의미는 달라질 수 있습니다.

개인적인 취향의 문제이지만, 세 번째 옵션이 가장 읽기 쉽다고 생각합니다.대부분의 경우 언급된 단점은 무시할 수 있으며 가독성이 가장 중요한 요소입니다.

*: 재미있는 사실: Chrome에서는 60%의 성능 차이가 나는 반면 Firefox에서는 눈에 띄는 성능 차이는 없었습니다.

TypeScript에서 입력된 어레이를 올바르게 사전 할당하는 문제는 어레이 리터럴 구문 때문에 다소 모호해지기 때문에 처음에 생각했던 것만큼 직관적이지 않았습니다.

올바른 방법은

var arr : Criminal[] = [];

그러면 변수 'arr'에 저장된 올바른 유형의 빈 배열이 제공됩니다.

이것이 다른 사람들에게 도움이 되길 바랍니다!

오래된 질문인 것은 알지만, 최근 특정 유형의 빈 어레이를 반환해야 했기 때문에 이 방법으로는 해결할 수 없는 유사한 문제에 직면했습니다.

나는 가지고 있었다

return [];

어디에[]이었다Criminal[]유형.

둘 다 아니다.return: Criminal[] [];도 아니다return []: Criminal[];날 위해 일했어

처음에는 반환하기 직전에 (당신이 정확하게 보고한 대로) 입력된 변수를 생성하여 해결했지만 (JavaScript 엔진이 어떻게 작동하는지 모르겠습니다) 오버헤드가 발생하여 읽기 쉬울 수 있습니다.

철저한 확인을 위해 이 솔루션도 답변으로 보고하겠습니다.

let temp: Criminal[] = [];
return temp;

결국 저는 TypeScript 유형의 캐스팅을 찾았고, 이를 통해 보다 간결하고 읽기 쉬운(그리고 효율적인) 방법으로 문제를 해결할 수 있었습니다.

return <Criminal[]>[];

이것이 미래의 독자들에게 도움이 되기를 바랍니다!

나에게 맞는 것을 시험해 보세요.

return [] as Criminal[];

여기서 구문이 틀렸습니다.정확한 방법은 다음과 같습니다.

var arr: Criminal[] = [];

var를 var var를 죠.그러면 var를 내부 어딘가에서 선언하는 것입니다.func()letvar.

c class property use로 선언하면 private, public, protected 등의 수식어가 부가됩니다.

다음과 같은 공용 사용:

public arr: Criminal[] = [];

TLDR:

// explicitly type the variable arr
var arr: Criminal[] = [];

상세:

다음과 같은 요소가 없는 어레이가 있는 경우:

var arr = [];

에 그 , 을 알 수.arr음음음같 뭇매하다

any[]

그런 다음 유형 주석을 사용하여 수행할 수 있는 배열 유형을 TS에 전달하는 것이 프로그래머의 일입니다.

var arr: Criminal[] = [];

는 해당 을 알 수.Criminal.

언급URL : https://stackoverflow.com/questions/15826745/typescript-creating-an-empty-typed-container-array

반응형