JavaScript 빠른 팁: 기본 매개변수와 함께 필수 함수 인수 만들기

4798 단어 typescriptjavascript
이런 코드를 작성한 적이 있습니까?

const myFunction = (argument) => {
  if (argument == null) {
    throw new Error('argument is a required argument');
  }
}


유효하지 않은 인수를 방지하는 것은 완벽합니다. 일반적으로 매우 모호한 오류 메시지와 함께 함수의 임의 지점에서 실패하는 것보다 훨씬 낫습니다. 그러나 보호문을 반복해서 작성하면 코드가 매우 빠르게 부풀어오를 수 있습니다.

물론 아래와 같이 이미 더 나은 도우미 함수를 작성할 수 있습니다.

const assertPresent = (value, name) => {
  if (value == null) throw new Error(`${name} is a required argument`);
};


그런 다음 다음과 같이 함수의 첫 번째 줄에 매개변수가 있음을 어설션할 수 있습니다.

const myFunction = (argument) => {
  assertPresent(argument, 'argument');
  // further processing...
};


그러나 제 생각에는 이것은 여전히 ​​독자를 기능의 가장 중요한 부분인 실제 논리에서 멀어지게 합니다. 다행히 함수 본문에서 매개변수 목록으로 어설션을 이동하는 또 다른 방법이 있습니다.

코드



기본 매개변수를 사용하여 함수 인수를 필수로 만들 수 있습니다. 이것이 작동하려면 먼저 즉시 오류를 발생시키는 도우미 함수가 필요합니다.

const required = (parameterName) => throw new Error(`${parameterName} is a required argument`);


그런 다음 이 기능을 다음과 같이 통합할 수 있습니다.

const myFunction = (argument = required('argument')) => {
  // processing...
};


이제부터 사용자가 다음과 같이 함수를 호출할 때:

myFunction(); // => Error: argument is a required argument


인수를 제공하지 않으면 필요한 함수가 트리거되어 즉시 읽을 수 있는 오류 메시지가 표시되기 때문에 오류가 발생합니다.

이렇게 하면 함수 헤드로 이동할 수 있는 어설션으로 함수 본문이 부풀어 오르는 것을 방지할 수 있습니다. 그리고 의미 체계를 더 잘 보존합니다.

한 가지 주의 사항



이 솔루션은 기능적으로 원래 코드와 완전히 동일하지 않습니다. 기본 매개변수는 명시적으로 설정된 참조이기 때문에 null을 포착하지 않습니다. null을 제대로 처리해야 하는 경우 기본 매개변수 솔루션으로는 처리할 수 없습니다.

전체 팁을 이미지로



시각적 콘텐츠가 더 마음에 들거나 나중을 위해 저장하고 싶다면 이 모든 것을 하나의 이미지에 담았습니다. 나는 그것을 좋아하면 좋겠!



가기 전에



이와 같은 더 많은 콘텐츠를 읽고 싶다면 언제든지 또는 에서 저를 방문하십시오.

계속 성장하는 멋진 친구들의 그룹으로 당신을 세고 싶습니다!

좋은 웹페이지 즐겨찾기