티스토리 뷰
728x90
// keyof + generic + extends & type lookup
interface IPerson {
name: string;
age: number;
}
const person: IPerson = {
name: "Hyun",
age: 33,
};
const getProp = (obj: IPerson, key: string | number): string | number => {
return obj[key]; // Error
};
const getProp1 = (obj: IPerson, key: keyof IPerson): IPerson[keyof IPerson] => {
return obj[key];
};
const getProp2 = <T, K extends keyof T>(obj: T, key: K): T[K] => {
return obj[key];
};
const setProp = (
obj: IPerson,
key: string | number,
value: string | number
): void => {
obj[key] = value; // Error
};
const setProp1 = (
obj: IPerson,
key: keyof IPerson,
value: IPerson[keyof IPerson]
): void => {
obj[key] = value; // Error
};
const setProp2 = <T, K extends keyof T>(obj: T, key: K, value: T[K]): void => {
obj[key] = value;
};
'웹 개발 > Typescript' 카테고리의 다른 글
Nextjs window.ethereum, environment variable 타이핑 (0) | 2022.01.16 |
---|---|
Generic 기본 (0) | 2022.01.08 |
class 기본 (static, singleton) (0) | 2022.01.08 |
class 기본 (readonly, index signatures) (0) | 2022.01.04 |
class 기본 (초기화, getter, setter) (0) | 2022.01.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JWT
- 블록체인
- 앱 아이콘
- web3-token
- web3
- avalanchego
- Call
- 블록 탐색기
- Hardhat
- nft
- swr
- interface
- caver.js
- caver-js
- Truffle
- ERC721
- eslint
- ganache
- erc20
- Proxy Pattern
- Android
- metamask-extension
- Upgradeable Contracts
- class
- Flutter
- typescript
- 스마트 컨트랙트
- 이더리움
- ethers.js
- web3.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함