특정 값의 배열을 입력하면 각 값이 최대 한 번만 나타날 수 있습니다. (TypeScript)

Remirror

다음과 같은 기능이 있다고 가정하십시오.

function getUserInfo(desiredProperties: ('name' | 'age' | 'salary')[]) {
  const userInfo: Record<string, unknown> = {};
  for (const propertyName of desiredProperties) {
    userInfo[propertyName] = fetchEffortfullyFromDatabase(...);
  }
  return userInfo;
}

이제 함수를 "보통"이라고 부르면

const userInfo = getUserInfo(['name', 'salary']);

모든 것이 좋습니다. 그러나 어떤 것도 같은 전화를 막지 못합니다.

const userInfo = getUserInfo(['name', 'name', 'name', ...]);

불필요한 데이터베이스 액세스를 많이 유발합니다. 물론 이것은 getUserInfo런타임에 간단히 처리 할 수 있지만 컴파일러가 이러한 호출을 인식하고 금지하기를 원합니다.

('name' | 'age' | 'salary')[]propertyNames의 가능한 모든 조합의 조합으로 변경할 수 있습니다 . 즉 ['name'] | ['name', 'age'] | ['name', 'age', 'salary'] | ['age'] | ..., 세 가지 값에 대해서도 너무 지루하고 더 많은 경우에는 거의 수행 할 수 없습니다 (특히 순서를 고려할 때).

그렇다면 원하는 타이핑을 얻는 다른 방법이 있습니까? 어쩌면 뭔가 AllCombinations<'name', 'age', 'salary'>?

니콜라이 골 체프

Set유형 기능을 사용 하여 전달 된 인수의 고유 한 멤버 만 추출 할 수 있습니다 .

function getUserInfo(desiredProperties: ('name' | 'age' | 'salary')[]) {
  const uniqueMembers = new Set(desiredProperties); // this extract only unique members of array
  const userInfo: Record<string, unknown> = {};
  for (const propertyName of uniqueMembers) { // and here you iterate only through unique members
    userInfo[propertyName] = fetchEffortfullyFromDatabase(...);
  }
  return userInfo;
}

let userInfo = getUserInfo(['name', 'salary']);

userInfo = getUserInfo(['name', 'name', 'name']);

물론 이러한 솔루션은 런타임에 불필요한 계산을 가정하기 때문에 완벽하지 않습니다.

불필요한 계산을 원하지 않는 경우 유형을 desiredProperties설정할 수 있습니다 Set<'name' | 'age' | 'salary'>. 그리고 다음 getUserInfo과 같이 전화 하십시오.

const userInfo = getUserInfo(new Set(['name', 'salary']));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

배열에 중복을 추가하지 않고 특정 속성에 대해 한 번에 하나의 값만 가질 수있는 방법은 무엇입니까?

분류에서Dev

각 행의 최대 값이 특정 임계 값보다 작은 경우 numpy 배열의 마지막 열을 수정하는 방법은 무엇입니까?

분류에서Dev

모든 고유 ID 값과 함께 특정 ID에 대한 특정 날짜의 최신 값을 계산하는 쿼리 수식이 있습니까?

분류에서Dev

차이 배열의 최대 값을 얻기위한 각 함수

분류에서Dev

data.table을 사용하여 각 열에 나타나는 특정 값에 대한 개수 벡터 반환

분류에서Dev

각 값이 최대 한 번만 존재할 수있는 테이블 생성

분류에서Dev

각 값의 키에 해당하는 값 제약 조건이있는 Typescript 맵을 정의 할 수 있습니까?

분류에서Dev

특정 값을 삽입하여 각 행에서 NULL이 아닌 첫 번째 값을 바꿀 수 있습니까?

분류에서Dev

배열의 요소에 대한 최대 값을 고정하는 방법이 있습니까?

분류에서Dev

각 열에 특정 값이 있음을 나타내는 합계를 계산하고 각 ID에 대한 총 개수를 취하는 방법은 무엇입니까?

분류에서Dev

정수 arr의 배열이 주어지면 배열의 각 값이 고유 한 경우에만 true를 반환하는 함수를 작성합니다.

분류에서Dev

하나의 값이 한 번만 사용될 수있는 두 배열 사이의 모든 값 조합을 찾으십니까?

분류에서Dev

조건을 한 번만 지정하여 tibble의 다른 열 값을 기반으로 둘 이상의 열을 변경할 수 있습니까?

분류에서Dev

samn 열의 각 값에 대한 필터 데이터 프레임에는 Panda \ Python의 다른 열에 대한 특정 값이 있습니다.

분류에서Dev

최근 연도에 특정 값이있는 경우 각 그룹에 대해 이전 연도의 값을 어떻게 바꿀 수 있습니까?

분류에서Dev

첫 번째는 값이되고 두 번째는 해당 값에 대한 키가되는 두 개의 배열을 어떻게 만들 수 있습니까?

분류에서Dev

각 열의 첫 번째 값과 특정 값을 각각 사용하여 null 및 특정 값 업데이트

분류에서Dev

SQL 각 그룹의 값을 계산하고 단일 열의 각 값에 대한 최대 개수 검색

분류에서Dev

Pandas : 각 행 내의 최소값에 대한 열 이름을 가져오고 나머지 열과 비교하여 % 차이를 얻습니다.

분류에서Dev

dd에 대한 bs 매개 변수의 최적 값을 결정하는 방법이 있습니까?

분류에서Dev

다른 열 특정 값에 대한 값이있는 테이블에 하나의 열 추가

분류에서Dev

배열 당 하나의 특정 요소 만 고려하여 배열 배열에서 최대 값으로 배열을 얻는 방법

분류에서Dev

한 번만 텍스트 입력 값을 얻을 수 있습니다

분류에서Dev

CSV 형식의 테이블을 나타내는 문자열이 주어지면 특정 열의 최대 값을 가져 오는 Python 함수

분류에서Dev

Google 스프레드 시트의 열에 한 번만 (두 번 이상) 나타나는 값의 수를 계산하는 방법은 무엇입니까?

분류에서Dev

특정 수 이상의 값을 배열에 표시하고 얼마나 많은 값이 있는지 계산

분류에서Dev

R-목록의 모든 요소에 대해 각 j 열에 동일한 최대 값을 어떻게 설정할 수 있습니까?

분류에서Dev

모든 행에 대한 특정 기준을 필터링하고 동일한 값을 가진 각 열에 대해 하나의 행만 반환

분류에서Dev

사용자가 입력 한 정수의 최소 / 최대 값을 표시하는 데 도움이 필요합니다.

Related 관련 기사

  1. 1

    배열에 중복을 추가하지 않고 특정 속성에 대해 한 번에 하나의 값만 가질 수있는 방법은 무엇입니까?

  2. 2

    각 행의 최대 값이 특정 임계 값보다 작은 경우 numpy 배열의 마지막 열을 수정하는 방법은 무엇입니까?

  3. 3

    모든 고유 ID 값과 함께 특정 ID에 대한 특정 날짜의 최신 값을 계산하는 쿼리 수식이 있습니까?

  4. 4

    차이 배열의 최대 값을 얻기위한 각 함수

  5. 5

    data.table을 사용하여 각 열에 나타나는 특정 값에 대한 개수 벡터 반환

  6. 6

    각 값이 최대 한 번만 존재할 수있는 테이블 생성

  7. 7

    각 값의 키에 해당하는 값 제약 조건이있는 Typescript 맵을 정의 할 수 있습니까?

  8. 8

    특정 값을 삽입하여 각 행에서 NULL이 아닌 첫 번째 값을 바꿀 수 있습니까?

  9. 9

    배열의 요소에 대한 최대 값을 고정하는 방법이 있습니까?

  10. 10

    각 열에 특정 값이 있음을 나타내는 합계를 계산하고 각 ID에 대한 총 개수를 취하는 방법은 무엇입니까?

  11. 11

    정수 arr의 배열이 주어지면 배열의 각 값이 고유 한 경우에만 true를 반환하는 함수를 작성합니다.

  12. 12

    하나의 값이 한 번만 사용될 수있는 두 배열 사이의 모든 값 조합을 찾으십니까?

  13. 13

    조건을 한 번만 지정하여 tibble의 다른 열 값을 기반으로 둘 이상의 열을 변경할 수 있습니까?

  14. 14

    samn 열의 각 값에 대한 필터 데이터 프레임에는 Panda \ Python의 다른 열에 대한 특정 값이 있습니다.

  15. 15

    최근 연도에 특정 값이있는 경우 각 그룹에 대해 이전 연도의 값을 어떻게 바꿀 수 있습니까?

  16. 16

    첫 번째는 값이되고 두 번째는 해당 값에 대한 키가되는 두 개의 배열을 어떻게 만들 수 있습니까?

  17. 17

    각 열의 첫 번째 값과 특정 값을 각각 사용하여 null 및 특정 값 업데이트

  18. 18

    SQL 각 그룹의 값을 계산하고 단일 열의 각 값에 대한 최대 개수 검색

  19. 19

    Pandas : 각 행 내의 최소값에 대한 열 이름을 가져오고 나머지 열과 비교하여 % 차이를 얻습니다.

  20. 20

    dd에 대한 bs 매개 변수의 최적 값을 결정하는 방법이 있습니까?

  21. 21

    다른 열 특정 값에 대한 값이있는 테이블에 하나의 열 추가

  22. 22

    배열 당 하나의 특정 요소 만 고려하여 배열 배열에서 최대 값으로 배열을 얻는 방법

  23. 23

    한 번만 텍스트 입력 값을 얻을 수 있습니다

  24. 24

    CSV 형식의 테이블을 나타내는 문자열이 주어지면 특정 열의 최대 값을 가져 오는 Python 함수

  25. 25

    Google 스프레드 시트의 열에 한 번만 (두 번 이상) 나타나는 값의 수를 계산하는 방법은 무엇입니까?

  26. 26

    특정 수 이상의 값을 배열에 표시하고 얼마나 많은 값이 있는지 계산

  27. 27

    R-목록의 모든 요소에 대해 각 j 열에 동일한 최대 값을 어떻게 설정할 수 있습니까?

  28. 28

    모든 행에 대한 특정 기준을 필터링하고 동일한 값을 가진 각 열에 대해 하나의 행만 반환

  29. 29

    사용자가 입력 한 정수의 최소 / 최대 값을 표시하는 데 도움이 필요합니다.

뜨겁다태그

보관