첫 번째 매개 변수에 가능한 값의 열거 형을 가지고 있으며 첫 번째 매개 변수를 기반으로 두 번째 매개 변수를 원합니다. 따라서 NAME이 주어지면 두 번째 매개 변수를 문자열로 지정합니다. 나이가 주어지면 두 번째 매개 변수를 숫자로 지정합니다.TypeScript 첫 번째 매개 변수 유형에 기초한 두 번째 매개 변수 유형
어떻게하면됩니까?
enum KeyType {
NAME,
AGE
}
class MyClass {
public static setProperty(key: KeyType.NAME, value: string): void { }
public static setProperty(key: KeyType.AGE, value: number): void { }
}
그리고이 같은 메서드를 호출 할 것이다 : 또한
MyClass.setProperty(KeyType.NAME, 'John');
, 이것은 오류 표시해야합니다 :
MyClass.setProperty(KeyType.NAME, 5);
// (5)이 예에서는 문자열
아니다 key
유형이 잘못 정의되어 있으므로 작동하지 않습니다 (키 유형은 실제로 열거 형 값이므로 키 유형은 0
입니다).
특정 매개 변수 키에만 특정 유형을 허용하는이 기능을 사용하는 다른 접근 방법에 대한 제안도 있습니다. 어떤이 방법에 대한
var enum1 = { SMALL:"asjdh", MEDIUM:2};
console.log(enum1.SMALL)
console.log(enum1.MEDIUM)
당신이'MyClass'에 넣었던 것에서 타입을 수정 하시겠습니까? 하나 이상의 유형을 가질 수있는 것은 어떻습니까? 당신은 단순히'name : string; '과'age : number;'속성을 사용하지 않는 특별한 이유가 있습니까? – jonrsharpe
@jonrsharpe 내가 오버로드 된 메서드가되고 싶습니다. 따라서 두 번째 매개 변수의 형식은 첫 번째 매개 변수의 KeyType 값을 기반으로합니다. 그래서, 당신은'MyClass.name = string'과 같은 것을 제안합니다,하지만 MyClass.set ('name', string)'과 같은 것을 원합니다. 이 방법은 이름이 변수 내에 저장 될 때 속성 값을 동적으로 설정할 수 있습니다. 또한이 방법으로 변경할 수있는 모든 사용 가능한 속성의 'enum'을 갖게됩니다. – Cristy
당신은'keyof'와 함께 enum을 필요로하지 않습니다. 그리고'thing [name]'으로 동적으로 할당 할 수 있습니다.그러나 이것은 https://stackoverflow.com/questions/46909089/dynamic-return-type-based-on-string과 비슷하다고 생각합니다. – jonrsharpe