2017-10-20 5 views
1

I (함수 내부)이 보이는 일부 상속 타이프 코드 가지고타이프의 CONST X = ... this.x]

const Statuses = [...this.Statuses] 

this.Statuses 상태 코드의 배열을 말한다 (동일한 .ts 파일 내에 정의 된 Statuses = status [];로 정의 됨). 위의 줄에이어서 코드는 상태에 따라 작동합니다.

[... this.var] 구문이하는 일을 이해하려고합니다. 왜 이걸 참조하지 않는 것입니까? 처음에는 상태?

예, 나는 .... 사전에

감사를 자바 스크립트/타이프 라이터에 새로운 해요.

+0

JavaScript ES6 또는 JS 2016에는 많은 새로운 기능이 추가되었습니다. 이것은 그들 중 하나입니다. ES6을 읽으려면 urs를 30 분 정도 걸리십시오. 새로운 구문을 이해하는 데 도움이 될 것입니다. https://babeljs.io/learn-es2015/ – xdeepakv

+1

@DeepakSharma : JS 2016과 같은 것은 존재하지 않습니다. 저는 ES2015를 의미한다고 생각합니다. –

+0

어쨌든 나는 첨부 된 링크가있는 예를 보여 주었다. 아무것도 아니요. – xdeepakv

답변

3

"spread notation"이면 배열과 같은 일종의 Iterable이어야하는 이산 요소로 확산됩니다. 이 경우 배열은 ...this.Statuses이 배열을 만드는 [] 내에 있기 때문에 새로운 배열을 형성합니다.

따라서 this.Statuses이 배열 인 경우 기능적으로는 const Statuses = this.Statuses.slice(); (또는 그 이상)과 기능적으로 동일합니다.

this.Statuses이 Iterable의 또 다른 종류 인 경우 기능적으로는 const Statuses = Array.from(this.Statuses);과 동일합니다.

+4

@jcalz : OMG, 자동 조종사에 관해서. 고침, 고마워. (나는 문자 적으로 "... 퍼진다."라고 말했고 아직 놓쳤다. 나는 "쉬다"라고 말했다.) 한숨. 적어도 나는 그것을 운영자라고 부르지 않았다. :-)) –

1

복사의 예술적으로 즐거운 방법으로 원래의 돌연변이를 피할 수 있습니다. 다른 답변에서 언급 한 것처럼 확산 구문을 사용합니다.

const a = [ 1 ] 
 
const b = a 
 
const c = [...a] 
 

 
b.push(2) 
 
c.push(3) 
 

 
console.log(` original: ${a}`) 
 
console.log(`reference: ${b}`) 
 
console.log(`  copy: ${c}`)

1

그것은 spread syntax입니다. 하나의 배열 (또는 객체)에서 다른 배열 또는 객체로 항목을 복사 할 수 있습니다. 귀하의 경우 원래 배열 변이를 피하기 위해 this.Statuses의 얕은 복사본을 만드는 데 사용됩니다. 예를 들어 Statuses으로 새 항목을 올리면 원래 배열 (this.Statuses)이 변경되지 않고 그대로 유지됩니다.