programing

TypeScript를 사용한 개방형 함수 인수

javajsp 2023. 3. 25. 09:54

TypeScript를 사용한 개방형 함수 인수

IMO는 TypeScript 언어의 주요 관심사 중 하나로 기존의 바닐라 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기능을 사용할 수 있습니까?

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의 답변과 더불어:또, VIP 주소의arrow function expressionTypeScript (일종의lambdaJava /로 표시됩니다.네트워크)

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}

Typescript에서는 Rest Parameter의 개념이며 유사한 유형의 여러 값을 수신하는 파라미터입니다.타이프스크립트를 타겟으로 하면 ECMAScript 6 standard 코드를 작성해야 합니다.그 후, 타이프스크립트 트랜스필러는 그것을 동등한 자바 스크립트 코드(ECMAScript 5 standard)로 변환합니다.타이프 스크립트를 사용하면 rest parameter 변수 이름에 함수 sum(...numbers: number [])과 같은 3개의 도트(...)를 사용해야 합니다.그러면 동작합니다.

참고: Rest Parameter는 파라미터 목록의 마지막 파라미터여야 합니다.마찬가지로 함수 sum(name:string, age: number, ...sumber: number [ ]).

언급URL : https://stackoverflow.com/questions/12697275/open-ended-function-arguments-with-typescript