TypeScript 언어 의 주요 관심사 중 하나 인 IMO 는 기존의 바닐라 JavaScript 코드를 지원하는 것입니다. 이것은 내가 처음에 느꼈던 인상입니다. 완벽하게 유효한 다음 JavaScript 함수를 살펴보십시오.
참고 :이 접근 방식이 마음에 든다는 것은 아닙니다. 나는 이것이 유효한 JavaScript 코드라고 말하는 것입니다.
function sum(numbers) {
var agregatedNumber = 0;
for(var i = 0; i < arguments.length; i++) {
agregatedNumber += arguments[i];
}
return agregatedNumber;
}
따라서이 함수를 여러 인수와 함께 사용합니다.
console.log(sum(1, 5, 10, 15, 20));
그러나 TypeScript Playground 로 이것을 시도 하면 컴파일 시간 오류가 발생합니다.
나는 이것이 버그라고 가정하고 있습니다. 호환성 문제가 없다고 가정 해 봅시다. 그렇다면 개방형 인수를 사용하여 이러한 유형의 함수를 작성하는 방법이 있습니까? params
C #의 기능과 같은 ?
답변
이를 수행하는 TypeScript 방법은 ...
인수 이름 앞에 줄임표 연산자 ( ) 를 배치하는 것 입니다. 위의 내용은 다음과 같이 작성됩니다.
function sum(...numbers: number[]) {
var aggregateNumber = 0;
for (var i = 0; i < numbers.length; i++)
aggregateNumber += numbers[i];
return aggregateNumber;
}
그런 다음 올바르게 입력합니다.
console.log(sum(1, 5, 10, 15, 20));
답변
@chuckj 답변 외에도 : arrow function expression
TypeScript ( lambda
Java / .NET에서 일종의)를 사용할 수도 있습니다.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0);
}
답변
Typescript에서는 Rest Parameter 의 개념으로 유사한 유형의 여러 값을받는 매개 변수입니다. typescript를 대상으로하는 경우 ECMAScript 6 표준 코드를 작성해야하며 typescript transpiler는이를 동등한 Java 스크립트 코드로 변환합니다 ( 이는 ECMAScript 5 표준입니다). typescript를 사용하면 함수 sum (… numbers : number [])과 같은 restparameter 변수 이름과 함께 3 개의 dot (…) preferx를 사용해야합니다.
참고 :
나머지 매개 변수는 매개 변수 목록의 마지막 매개 변수 여야합니다. 마찬가지로 함수 sum (name : string, age : number, … numbers : number []).