Jak používat Omit?
Pokud vidíte výše uvedené rozhraní, má 3 vlastnosti: název, popis a dokončeno. Pokud chcete z tohoto rozhraní odstranit klíč názvu, můžete použít typ nástroje Vynechat. Ale zde vytvořím vlastní typ Omit, který bude dělat totéž, co obslužný typ Omit.
type CustomOmitT,K extends keyof T> = [Key in keyof T as Key extends K ? never : Key] : T[Key] > Vstupte do režimu celé obrazovky
Ukončete režim celé obrazovky
Pokud vidíte výše uvedený fragment kódu, který očekává typ a klíče. Vynechat pouze odstraní klíče z typu nebo rozhraní, které předáváme, proto jsem vrátil K extends keyof T . a později musíme jen zkontrolovat, zda je klíč k dispozici v K, pokud je dostupný, vrátíme se nikdy jiný nevrátí pár klíčHodnota.
type TodoPreview = OmitTodo, "title">; type TodoPreviewCustomOmit = CustomOmitTodo, "title">; Vstupte do režimu celé obrazovky
Ukončete režim celé obrazovky
Výše uvedené oba úryvky budou fungovat stejně a vybere všechny klíče/hodnoty kromě klíče názvu z typu Todo. Např.
const todo: TodoPreviewCustomOmit = description: string, completed: boolean, > Vstupte do režimu celé obrazovky
Ukončete režim celé obrazovky
Další podrobnosti naleznete v oficiálním doc
Nejlepší komentáře (4)
22. 2021
Rozbalovací nabídka
Proč bych potřeboval vlastní typ vynechání?
Líbí se mi komentář:
3 Líbí se mi tlačítko Komentář
Ajay kumbhare
Javascript Enthusiastic | Cvičení FP
Surat, Indie
Mistr počítačových aplikací
Softwarový inženýr ve společnosti MakeMyTrip ✈️
11. 2020
Rozbalovací nabídka
Nepotřebujete, ale v některých případech, pokud chcete vytvořit nějaké vlastní typy na základě vašeho požadavku, pak vám pomůže získat představu, jak to můžete implementovat.
PS Cvičím strojopis, abych mohl den za dnem zdokonalovat své dovednosti ☺️
Líbí se mi komentář:
3 Líbí se mi tlačítko Komentář
Kirill Šestakov
24. 2017
Rozbalovací nabídka
Je to velmi dobrý způsob cvičení
Líbí se mi komentář:
3 Líbí se mi tlačítko Komentář
Kostiantyn Kubusha
25. 2021
Rozbalovací nabídka
Děkuji Ajay, hledal jsem syntaxi, jak vyloučit některé klíče na základě podmínky, a nakonec jsem to našel zde. S použitím konstrukce podmíněných klíčů jako
[Klíč v klíči T jako klíč rozšiřuje K ? never : Key] existuje tolik skvělých věcí, které lze dělat.
Zde jsem například vytvořil jednoduchý typ, abych získal pouze vlastnosti z poskytnutého typu:
typ Vlastnosti = [Klíč v klíči T jako T[Klíč] rozšiřuje Funkce ? nikdy : Klíč]: T[Klíč]
>;
Pěkná utilita pro použití například v serializacích. Ještě jednou děkuji!
Líbí se mi komentář:
1 To se mi líbí tlačítko Komentář
Pro další akce můžete zvážit zablokování této osoby a/nebo nahlášení zneužití
Přečtěte si další
Generování kódu s umělou inteligencí: Revoluční vývoj
JUnit Testing: Komplexní průvodce testováním jednotek v Javě
Nějaký webový vývojář nebo designér na Lanzarote? Příští týden se chystám na pokec a kávu (PDC nebo Arrecife) ☕️
Mads Stoumann – 8. prosince
Typy: char a boolean
Ricardo Caselati – 9. prosince
Daný objekt obj a pole strings paths, Lodashova funkce pick() vrátí nový objekt se všemi klíči v obj, které jsou ne v cestách. omit() je opakem Lodashovy funkce pick().
const obj = < name: 'Will Riker', rank: 'Commander', age: 29 >; const newObj = _.omit(obj, ['rank', 'age']); newObj === obj; // false newObj.name; // 'Will Riker' newObj.rank; // undefined newObj.age; // undefined omit() nevyvolá žádné chyby, pokud se pokusíte vynechat cesty, které neexistují.
const obj = < name: 'Will Riker', rank: 'Commander', age: 29 >; // Works fine even though 'something else' isn't a path in `obj` const newObj = _.omit(obj, ['rank', 'age', 'something else']); newObj === obj; // false newObj.name; // 'Will Riker' newObj.rank; // undefined newObj.age; // undefined Tečkované cesty
Stejně jako pick() , omit() podporuje tečkované cesty a další syntaxe, které Lodashova funkce get() podporuje. Můžete vynechat vlastnosti pod objekty a dokonce i jednotlivé prvky pole.
const obj = < name: < first: 'Will', last: 'Riker' >, rank: 'Commander', ships: ['USS Enterprise', 'USS Pegasus'], age: 29 >; const newObj = _.omit(obj, ['name.first', 'age', 'ships.1']); newObj === obj; // false newObj.name.first; // undefined newObj.name.last; // 'Riker' newObj.rank; // 'Commander' newObj.ships; // ['USS Enterprise',] Note that index 1 is an array hole newObj.age; // undefined Alternativy Vanilla JS
Pokud vše, co chcete udělat, je vynechat některé klíče nejvyšší úrovně z objektu, možná nebudete potřebovat Lodash. Existuje několik způsobů, jak replikovat omit() bez Lodashe, s výjimkou tečkovaných cest a dalších pokročilých funkcí.
Nejvýstižnějším způsobem je použití anonymní funkce šipky v kombinaci s operátorem spread následovně.
const obj = < name: 'Will Riker', rank: 'Commander', age: 29 >; // Looks tricky, but the idea is that you're calling an anonymous arrow // function that uses the spread operator to get all properties _other than_ // `rank` and `age`. const newObj = (( ) => rest)(obj); newObj === obj; // false newObj.name; // 'Will Riker' newObj.rank; // undefined newObj.age; // undefined Výše uvedený přístup je stručný, ale obtížně čitelný, zejména pro začátečníky. Můžete také implementovat krátkou pomocnou funkci následovně.
function omit(obj, keys) < const ret = <>; keys = new Set(keys); const keysToCopy = Object.keys(obj).filter(key => !keys.has(key)); for (const key of keysToCopy) < ret[key] = obj[key]; >return ret; > Přišel vám tento návod užitečný? Poděkujte hvězdičkou našeho repozitáře na GitHubu!
Další výukové programy Lodash
- Lodashova funkce cloneDeep().
- Kapitalizujte první písmeno řetězce pomocí Lodash
- Odstraňte null z pole pomocí Lodashe
- Najděte objekty podle vnořených vlastností pomocí Lodash
- Pomocí Lodash zkrátit
- Jak odstranit null z objektu pomocí Lodash
- Funkce Different() v Lodash