Programming/TypeScript 10

[ TypeScript ] object์— key-value ํ•˜๋‚˜ ์ถ”๊ฐ€ (map ์ด์šฉ)

- ์กฐ๊ฑด์ด ์žˆ์„ ๋•Œ temp = temp.map((el: any) => (el.index === selectedData[i].index ? { ...el, rowType: '์‚ญ์ œ' } : el)); selectedDatas๋Š” ํ˜„์žฌ ์„ ํƒ๋˜์–ด ์žˆ๋Š” ํ–‰์„ ๋งํ•œ๋‹ค. (ag grid) ์„ ํƒ๋˜์–ด ์žˆ๋Š” index๊ณผ temp์— ์žˆ๋Š” index ๊ฐ’์ด ๊ฐ™์œผ๋ฉด rowType์— '์‚ญ์ œ'๋ผ๋Š” ๊ฐ’์„ ์ค€๋‹ค. const newData = callListcp.map((item: any) => ({ ...item, campaignName: initCampaignList?.find((el) => el.cdId === String(item.id))?.cdNm }));

[ AG-GRID ] aggFunc: 'sum' ์•ˆ ๋˜๋Š” ๋ฌธ์ œ

duration์— ๋Œ€ํ•ด ํ•ฉ๊ณ„๊ฐ€ ํ•„์š”ํ•œ ํ†ต๊ณ„ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์žˆ๋‹ค. const columnDefs = [ ... (์ƒ๋žต) { headerName: 'duration', field: 'duration', enableValue: true, aggFunc: 'sum', width: 150, minWidth: 150, cellStyle: { textAlign: 'center' } } ]; ๋‹ค๋ฅธ ์ปฌ๋Ÿผ๋“ค์ฒ˜๋Ÿผ aggFunc: 'sum'์„ ์จ์ฃผ์—ˆ๋Š”๋ฐ, ๊ณ„์† ํ•ฉ๊ณ„๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด์œ ๋Š” ๋ฐ”๋กœ.. duration์ด text๋กœ ๋„˜์–ด์™”๊ธฐ ๋•Œ๋ฌธ. ์ˆซ์ž์—ฌ์•ผ๋งŒ sum์„ ํ•  ์ˆ˜ ์žˆ์–ด์„œ, duration์— ๋Œ€ํ•œ ํ•ฉ๊ณ„๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ duration์„ float์œผ๋กœ ๋ฐ›๊ณ  ๋‚˜์„œ valueFormatter์„ ํ†ตํ•ด ์‹œ๊ฐ„ ํ˜•..

[ TypeScript ] sort ํ•จ์ˆ˜ - ํŠน์ • ๋ฌธ์ž์—ด ์ปฌ๋Ÿผ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ

temp = ๋ฐ์ดํ„ฐ์…‹ name์ด๋ผ๋Š” ํŠน์ • ๋ฌธ์ž์—ด ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค. if (temp.length > 0) { temp.sort((a: { name: string }, b: { name: string }) => { return a.name.localeCompare(b.name); }); }

[20230107 TIL] AG-GRID ํ–‰์‚ญ์ œ(remove) ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ + ๋ฐ์ดํ„ฐ์…‹๋„ ๋ฐ˜์˜์‹œํ‚ค๊ธฐ

https://yejinrla.tistory.com/68 [ React ] AG-GRID applyTransaction ํ–‰์ถ”๊ฐ€(add), ํ–‰์‚ญ์ œ(remove), ํ–‰์ˆ˜์ •(update) ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ AG-GRID๋ฅผ ์ด์šฉํ•ด์„œ ๊ทธ๋ฆฌ๋“œ ํ–‰์ถ”๊ฐ€, ํ–‰์‚ญ์ œ, ํ–‰์ˆ˜์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ๊นŒ ์ƒ๊ฐ๋ณด๋‹ค ์ž˜ ๋‚˜์™€์žˆ์ง€ ์•Š์•„์„œ ํฌ์ŠคํŒ…ํ•ด๋ณธ๋‹ค. import { GridApi } from 'ag-grid-community' ์ผ๋‹จ GridApi๋ฅผ import ํ•ด yejinrla.tistory.com ์˜ˆ์ „์— ์ด ๊ธ€์„ ์˜ฌ๋ฆฐ์ ์ด ์žˆ์—ˆ๋‹ค. ๋งจ ๋งˆ์ง€๋ง‰ ์ค„์— ๋ณด๋ฉด ๋ฐ์ดํ„ฐ์…‹์€ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์จ์žˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋‹น์—ฐํ•˜๊ธด ํ•˜๋‹ค. ๋ฐ์ดํ„ฐ์…‹์€ useState๋กœ ๋”ฐ๋กœ ์„ ์–ธ๋˜๊ณ  ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์œผ๋‹ˆ... const selectedData: ..

[20230117 TIL] AG-GRID ์›ํ•˜๋Š” ๊ทธ๋ฆฌ๋“œ ํ–‰ ์„ ํƒ๋˜๊ฒŒ ํ•˜๊ธฐ (setSelected)

* ๊ตฌ์กฐ ํ™”๋ฉด์— 2๊ฐœ์˜ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์กด์žฌ. ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ ํ–‰์„ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ์ •๋ณด๊ฐ€ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆฌ๋“œ์— ๋œธ. * ๋งŒ๋“ค๊ณ ์ž ํ–ˆ๋˜ ๊ธฐ๋Šฅ ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ ํ–‰์„ ํด๋ฆญํ•œ ํ›„ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ˆ˜์ •์ค‘์— ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ ๋‹ค๋ฅธ ํ–‰์„ ํด๋ฆญํ•  ๋•Œ '์ž‘์„ฑ์ค‘์ž…๋‹ˆ๋‹ค. ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒ ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?' alert ์ฐฝ์ด ๋œฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ํ™•์ธ์„ ๋ˆ„๋ฅด๋ฉด ์กฐํšŒ๋ฅผ ์ง„ํ–‰ / ์ทจ์†Œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ˜„์ƒํƒœ๋ฅผ ์œ ์ง€์‹œํ‚ค๋ ค๊ณ  ํ–ˆ๋‹ค.(return) * ๋ฌธ์ œ ๋ฐœ์ƒ return์„ ์‹œ์ผœ๋„, ๋‹ค๋ฅธ ํ–‰์„ ํด๋ฆญํ–ˆ๋˜๊ฒŒ ๊ณ„์† ๋‚จ์•„์žˆ์—ˆ๋‹ค. ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ์—์„œ ํด๋ฆญ๋œ ํ–‰๊ณผ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆฌ๋“œ์˜ ์ƒ์„ธ์ •๋ณด๊ฐ€ ์„œ๋กœ ๋งž์ง€ ์•Š๊ฒŒ ๋œ ๊ฒƒ. * ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ ๊ธฐ์กด ํ–‰์„ ํด๋ฆญํ•˜๋„๋ก ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ด๋•Œ setSelected ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. forEachNode๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ๋ณด๋Š”๋ฐ (map๊ฐ™์€ ..

[ TypeScript ] AG-GRID ํŠน์ • ์…€ ์ž…๋ ฅ์‹œ ์ž…๋ ฅ ๋ฌธ์ž ์ œํ•œ (valueParser, new RegExp ์ •๊ทœ์‹)

ํŠน์ • ์‹œ๊ฐ„์ด๋ผ๋Š” ํ–‰์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์ž…๋ ฅ ๋ฌธ์ž๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. { headerName: '์‹œ๊ฐ„', field: 'time', editable: true, valueParser: (params: ValueParserParams) => { if (new RegExp(/[^0-9+:]/).test(params.newValue)) { dispatch({ type: SNACKBAR_OPEN, message: 'hh:mm:ss ํ˜•์‹์œผ๋กœ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.', alertSeverity: 'info' }); return params.oldValue; } return params.newValue; } }, ์ˆซ์ž์™€ : ๋ฌธ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด 'hh:mm:ss ํ˜•์‹์œผ๋กœ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.' ๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋Š” ์ฝ”๋“œ์ด๋‹ค.

[ TypeScript ] ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

const temp = 'a,b,c,d' json์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด "a,b,c,d"๋กœ ๋‚˜์˜จ๋‹ค. ๋‚˜๋Š” ["a","b","c","d"] ์ด๋Ÿฐ ํ˜•์‹์„ ์›ํ•œ๋‹ค. ๋Œ€๊ด„ํ˜ธ๋กœ ๋ฎ์–ด์ค˜๋„ ["a,b,c,d"]๋กœ ๋‚˜์™”๋‹ค. ๊ณ„์† json์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ”์•ผํ•˜์ง€๋งŒ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€, ๋ฐฐ์—ด๋กœ ๋จผ์ € ๋ฐ”๊ฟ”๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. const array = temp.split(','); ์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด ['a','b','c','d'] ๋กœ ๋ณ€ํ™˜๋œ๋‹ค!

[ TypeScript ] ์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด์˜ ์„ธ๊ณ„ (object key value ๋ฝ‘๊ธฐ, ์ด์ค‘๊ฐ์ฒด ๋ฐ์ดํ„ฐ ๋ฝ‘๊ธฐ)

1. object๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ”๊พธ๊ธฐ { samsung: 1, apple: 2, lg: 3} ์ด๋Ÿฐ object๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ œ์กฐ์‚ฌ ๋ฒˆํ˜ธ samsung 1 apple 2 lg 3 ์ด๊ฑธ ๊ทธ๋ฆฌ๋“œ์— ์ œ์กฐ์‚ฌ/๋ฒˆํ˜ธ๋กœ ๋ฟŒ๋ ค์ฃผ๊ณ  ์‹ถ๋‹ค. object์—์„œ key, value๋ฅผ ๋ฝ‘์„ ๋•Œ ๋ฐฐ์—ด๋กœ ์น˜ํ™˜์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. https://eloquence-developers.tistory.com/169 [JavaScript] Object.keys, values, entries Object.keys(obj) // ๊ฐ์ฒด์˜ ํ‚ค๋งŒ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ Object.values(obj) // ๊ฐ์ฒด์˜ ๊ฐ’๋งŒ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ Object.entries(obj) // ๊ฐ์ฒด์˜ ํ‚ค-๊ฐ’ ์Œ์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ ์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์œ„ ๋ฉ”์„œ๋“œ๋“ค์˜ ์“ฐ์ž„์ƒˆ....

TypeScript ๋ฌผ์Œํ‘œ ๋‘ ๊ฐœ (??) Nullish Coalescing

https://boxfoxs.tistory.com/427 typescript 3.7 ์†Œ๊ฐœ ์ตœ๊ทผ ์ด์ง์„ ํ•œ ํ›„ ๊ฐœ์ธ์ ์œผ๋กœ '๊ณต๋ถ€' ๋ผ๋Š” ๊ฒƒ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์–ด์ ธ์„œ ํฌ์ŠคํŒ…์„ ์“ฐ๋ฉด์„œ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์นจ ์ตœ๊ทผ์— typescript 3.7์ด ์ƒˆ๋กญ๊ฒŒ ๊ณต๊ฐœ๋ผ์„œ ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ๋ฒˆ์—ญํ•ด์„œ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•ด boxfoxs.tistory.com userId ?? '' userId๊ฐ€ null์ด๋‚˜ undefined๋ผ๋ฉด ?? ์˜ค๋ฅธ์ชฝ ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค๊ณ  ํ•œ๋‹ค. null์ด๋‚˜ undefined๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋Œ€๋กœ userId๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ.