type Value = { name: string }
const getValue = (value: Value) => {
return value.name
}
[출처] Typescript : object > key > value 타입|작성자 ondaa
type Value = {[k: string]: string}
const getValue = (value: Value) => {
return value.name
}
[출처] Typescript : object > key > value 타입|작성자 ondaa
type Keys = "name" | "title" | "content"
type Value = {[k in Keys]: string}
const getValue = (value: Value) => {
return value.name // name, title, content 가 될 수가 있다.
}
[출처] Typescript : object > key > value 타입|작성자 ondaa
const getValue = <T>(value: T) => {
return value.name
}
type Value = { name: string }
getValue<Value>({name: 'Chris'})
[출처] Typescript : object > key > value 타입|작성자 ondaa
const getValue = <T>(value: T) => {
return value.name
}
type Value = { name: string }
getValue<Value>({name: 'Chris'})
[출처] Typescript : object > key > value 타입|작성자 ondaa
const getValue = <T, K extends keyof T>(values: Array<T>, key: K): Array<> => {
return values.map((item) => item[key])
}
type Value = { name: string; title: string }
const value: Value = [
{ name: 'Chris', title: 'Title 1' },
{ name: 'Mark', title: 'Title 2' }
]
getValue<Value, "name">(value, "name")
[출처] Typescript : object > key > value 타입|작성자 ondaa
https://icerabbit.tistory.com/94
interface Person {
name: string
age: number
}
type Test = keyof Person // ("name", "age")
function setProperty<T, K extends keyof T>(obj: T, key: K, value: T[K]): void {
obj[key]=value
}
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key]
}
setProperty(person, 'name', 'Anna')
위의 Person interface에 keyof를 가져오면 'name'과 'age'가 나온다. setProperty는 Person의 멤버 프로퍼티를 set하는 역할이므로, Person의 멤버를 넣어야 한다. 그러므로 Generic에 keyof를 통한 제한을 주는 것이다.
Generic과는 별개이지만, enum과 같이 keyof 키워드를 활용할 수도 있다.
const SUBJECT = {
Math : 'Math',
English : 'English',
} as const;
type SUBJECT = typeof SUBJECT[keyof typeof SUBJECT]; // 'Math' | 'English'