IT TIP

for-in 문

itqueen 2020. 12. 27. 20:34
반응형

for-in 문


TypeScript 문서는 for또는 같은 루프에 대해 아무것도 말하지 않습니다 for-in. 언어를 가지고 놀 면서 루프 에서 any또는 string변수 만 지원되는 것 같습니다 for.

이 결정이 내려진 이유는 무엇입니까?

유형 정보를 사용하고 강력한 유형의 반복 변수를 사용하지 않는 이유는 무엇입니까?


for-in 문은 실제로 TypeScript에서 구현되는 방식 인 개체 속성을 열거하기 위해 존재합니다. 배열에서 사용하는 데 몇 가지 문제가 있습니다 .

TypeScript 팀을 대신하여 말할 수는 없지만 이것이 언어로 구현 된 이유라고 생각합니다.


Typescript 1.5 이상에서는 다음 for..of과 반대로 사용할 수 있습니다.for..in

var numbers = [1, 2, 3];

for (var number of numbers) {
    console.log(number);
}

TypeScript는 발에 총을 쏘지 않습니다.

반복기 변수는 문자열이기 때문에 문자열 입니다. 관찰 :

var obj = {};
obj['0'] = 'quote zero quote';
obj[0.0] = 'zero point zero';
obj['[object Object]'] = 'literal string "[object Object]"';
obj[<any>obj] = 'this obj'
obj[<any>undefined] = 'undefined';
obj[<any>"undefined"] = 'the literal string "undefined"';

for(var key in obj) {
    console.log('Type: ' + typeof key);
    console.log(key + ' => ' + obj[key]);
}

현재 몇 개의 키 / 값 쌍이 obj있습니까? 6, 다소? 아니오, 3 및 모든 키는 문자열입니다.

Type: string
0 => zero point zero
Type: string
[object Object] => this obj; 
Type: string
undefined => the literal string "undefined" 

edit 2018 : 이것은 구식이며 js 및 typescript에는 이제 for..of 루프가 있습니다.
http://www.typescriptlang.org/docs/handbook/iterators-and-generators.html


"TypeScript Revealed"라는 책에는

"여기에 설명 된대로 for 또는 for..in 루프를 사용하여 배열의 항목을 반복 할 수 있습니다.

// standard for loop
for (var i = 0; i < actors.length; i++)
{
  console.log(actors[i]);
}

// for..in loop
for (var actor in actors)
{
  console.log(actor);
}

"

두 번째 루프는 루프 의 액터를 전달 하지 않습니다 . 그래서 이것은 명백한 잘못이라고 말할 것입니다. 슬프게도 위와 같이 루프는 typescript에 의해 변경되지 않습니다.

map and forEach는 종종 저에게 도움이되며 함수 정의에 대한 typescripts 향상으로 인해 더 접근하기 쉽습니다.

this.notes = arr.map(state => new Note(state));

TypeScript에 대한 나의 위시리스트;

  1. 일반 컬렉션
  2. 반복자 (IEnumerable, IEnumerator 인터페이스가 가장 좋습니다)

참조 URL : https://stackoverflow.com/questions/12950681/for-in-statement

반응형