Hirdetés

2024. június 4., kedd

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2014-02-25 10:20:57

LOGOUT.hu

JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)

Összefoglaló kinyitása ▼

Hozzászólások

(#8651) Mr. Y válasza Pala (#8648) üzenetére


Mr. Y
senior tag
LOGOUT blog

Köszönöm, ez tényleg jó ötlet, majd merítek ötletet belőle, ha nekiállok :)

But who is watching the guardians?

(#8652) coco2 válasza Silεncε (#8650) üzenetére


coco2
őstag

A #8640-et megtaláltam. Feltételezem, arról van szó.

Amit a #8649-ben írtam, arra vonatkozó célzás, hogy találkoztam már ügyfél igénnyel, amikor valaki nagy sebbel-lobbal nekiállt nagyon tutit alkotni, és akkor derült ki, igazából fogalma sincs, hogy mit akar, vagy hogy egyáltalán mire hasonlítson? A #8646 + #8647 kísértetiesen arra hajaz.

De ha nagyon félre értettem volna valamit, gondolom, majd felvilágosítasz.

[ Szerkesztve ]

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8653) Mr. Y válasza coco2 (#8652) üzenetére


Mr. Y
senior tag
LOGOUT blog

Te nagyon félre érted a dolgokat :)

But who is watching the guardians?

(#8654) coco2 válasza Mr. Y (#8653) üzenetére


coco2
őstag

Van az úgy. Nem tiltja a törvény :)

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8655) Taci


Taci
addikt

Egyelőre ez még csak egy tapogatózó, felületes kérdezősködés, de azt szeretném elérni, hogy az oldalam csak olyan (verziójú) böngészőkön jelenhessen meg, amit 100%-ig támogat mindent, amit az oldalam használ.

Ehhez ugye előbb tudnom kellene, hogy pontosan mit használ az oldalam. Ehhez valamelyik topikban láttam belinkelve a Can I use oldalát, talán ezzel el tudok indulni.

De van esetleg olyan oldal, ami "átnézni" az oldalamat, és megmondja, hogy milyen böngészőkből milyen verzió az alap, hogy gond nélkül fusson minden?

Mert ha meglenne ez a lista, akkor az oldal betöltése előtt ellenőrizhetném a böngésző verzióját, és ha az általam beállított (a megkapott) verzió alatt van, akkor csak egy információs lapot jelenítenék meg, hogy a böngésző verziója nem támogatott, frissítse stb.

Vagy van erre jobb módszer? Ti hogyan kezelitek/kezelnétek ezt?

(JS topikba írom a kérdést, mert gondolom, azzal a legegyszerűbb ezt kezelni.)

Köszi.

(#8656) martonx válasza Taci (#8655) üzenetére


martonx
veterán

Ez a jó módszer. Viszont nem lesz olyan rendszer, ami ezt megmondja neked, hogy mit kell minimum támogatnod. Neked kell kitalálnod, hogy mi az amit támogatsz.

Én kérek elnézést!

(#8657) polymorphin válasza Taci (#8655) üzenetére


polymorphin
csendes tag

Babel + @babel/preset-env valamelyik module bundlerrel vagy task runnerrel, szerintem az esetek tobbsegeben nincs ra szukseg, ha csak nem Afrikat vagy Indiat celzod meg, vagy ES10+ featureket hasznalsz

[ Szerkesztve ]

(#8658) Taci válasza polymorphin (#8657) üzenetére


Taci
addikt

Tapasztalatból tudom, hogy sokak nem is foglalkoznak vele, milyen böngészőt használnak, menjen minden mindenen (ha már egyszer drágán megvették a gépet), így még ha tehetnék, most is IE-ben nyitnának meg mindent. Ezért akarom ezt az ellenőrzést bele, szétesve inkább ne jelenítse meg az oldalt sehogy, helyette egy információs lap, hogy használd ezt vagy azt a böngészőt.

Plusz valamelyik adblockeres Chrome addon-nál láttam olyan opciót egyből kéz alatt, hogy a Javascriptek futását letiltja teljesen. Na erre is fel akarom készíteni.

De leghamarabb maximum csak hétvégén lesz időm ezzel foglalkozni (vagy inkább csak bőven később), ezért is szántam még csak puhatolózó kérdésnek.

Köszönöm a válaszokat.

(#8659) Silεncε válasza polymorphin (#8657) üzenetére


Silεncε
őstag

A JS-polyfillekkel meg lehet oldani, de ugye ott vannak a különféle CSS szabályok, amikre ha jól tudom, nem létezik polyfill-szerű megoldás (hacsak valami CSS-in-JS nem tud hasonlót). Meg aztán lehet olyan régi böngésző is, ami még a HTML5-t se tudja

(#8660) polymorphin válasza Silεncε (#8659) üzenetére


polymorphin
csendes tag

Postcss, postcss-preset-env-el lehet, ez is a fentebb emlitett caniuse-bol dolgozik.
Ha nem tamogatja a HTML5-ot a bongeszo akkor lehet mondeni hogy igy jart

"szétesve inkább ne jelenítse meg az oldalt sehogy, helyette egy információs lap, hogy használd ezt vagy azt a böngészőt."
<noscript> - HTML: HyperText Markup Language | MDN (mozilla.org)

"Javascriptek futását letiltja teljesen. Na erre is fel akarom készíteni"
Ugy lehet felkesziteni hogy nem irsz egy sor JS kodot sem

(#8661) coco2 válasza polymorphin (#8660) üzenetére


coco2
őstag

Ugy lehet felkesziteni hogy nem irsz egy sor JS kodot sem

Azt nem különösebben nagy ügy elintézni, hogy legyen nagyon kevés számú legfelső szintű div, azokon alapból display: none, és az js-ből legyen átállítva block / inline vagy akármire. Ha js nem fut, nem fog látszani semmi, csak egy üzenet, hogy kedves felhasználó, leszel szíves engedélyezni a js-t.

De különben csatlakoznék azokhoz, akik tojnak rá. Aki letiltja a js-t, csak ignore, és nem foglalkozni vele, mi lesz az oldallal. Aki egy hulladék vacakot akar böngészőnek hívni, had büfögjön, amit csak akar, de ha az oldalt is akarja, lesz szíves letölteni egy böngészőt - chrome.

Én például bele írtam a user guide-ba, hogy figyi felhasználó, nincs itt semmi ördöngösség, de ha valami mégsem megy, légyszi töltsd le ezt a böngészőt, és oda adtam egy chrome linket.

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8662) _ak_ válasza coco2 (#8661) üzenetére


_ak_
addikt

Nekem erről egyből a Modernizr jutott eszembe, de nem tudom, hogy mennyire divatos még használni.

Más.

Ugyan csak lassacskán, de ismerkedem a TypeScripttel és van valami ami nem tudom, hogy miért nem működik. Az MS Authentication Libraryban adott egy type definition:

export declare type AccountInfo = {
    homeAccountId: string;
    environment: string;
    tenantId: string;
    username: string;
    localAccountId: string;
    name?: string;
    idTokenClaims?: object;
};

AzA React komponensemben szeretnék hozzáférni egy custom idTokenClaimshez:

const { accounts } = useMsal();
const account = useAccount(accounts[0] || {});
const customProp: IAccount = account?.idTokenClaims?.extension_customProp;

Az account definíciója az AccountInfo. Az IAccount egy általam létrehozott interface, ahol az AccountInfo-t próbálom kibővíteni, lovasítom alapján ennek működnie kellene:

interface IAccount extends AccountInfo {
  idTokenClaims: {
   extension_customProp: string;
  };
}

De akárhogy csavarom a dolgot az .extension_customProp-ra mindig azt kapom, hogy
TS2339: Property 'extension_customProp' does not exist on type 'object'.

Hol rontom el?

Let's begin, de gozaimasu!

(#8663) Silεncε válasza _ak_ (#8662) üzenetére


Silεncε
őstag

Szerintem: Az useAccount visszatérhet sima objecttel is (én erre következtetek a paraméterben átadott üres object miatt)? Akkor viszont a TS jogosan reklamál, hiszen ott az account típusa nem IAccount lesz, hanem IAccount | object “union”, az objecten pedig nem fogja megtalálni az adott propot.

Illetve az az IAccount típusdeklaráció sincs szerintem jó helyen, annak az account konstanson kene legyen, a customProp az interface szerint string típusú

[ Szerkesztve ]

(#8664) _ak_ válasza Silεncε (#8663) üzenetére


_ak_
addikt

Valóban, figyelmetlen voltam a customProp egy string a végére és rossz helyen deklaráltam.

const account: IAccount = useAccount(accounts[0] || {});
const customProp: string = account?.idTokenClaims?.extension_customProp;

Így megoldódik a customProp kérdése, de az accountra ezt kapom:

TS2322: Type 'AccountInfo | null' is not assignable to type 'IAccount'. Type 'null' is not assignable to type 'IAccount'.

A useAccount:
// Given 1 or more accountIdentifiers, returns the Account object if the user is signed-in
export declare function useAccount(accountIdentifiers: AccountIdentifiers): AccountInfo | null;

[ Szerkesztve ]

Let's begin, de gozaimasu!

(#8665) Silεncε válasza _ak_ (#8664) üzenetére


Silεncε
őstag

Igen, mivel a hook visszatérési típusa nem IAccount, hanem IAccount | null union, ezért csak siman IAccount típus nem lehet a tároló konstans típusa. Az account konstans típusa legyen ugyanúgy IAccount | null és úgy már jó lesz (a ?. le fogja kezelni, ha ott null van (de azt is kezeli, ha undefined), olyankor a string konstans értéke is undefined lesz)

(#8666) coco2 válasza _ak_ (#8662) üzenetére


coco2
őstag

TS/ES - a magam részéről nem erőltetném. ES6-nak anno örültem, de csak addig, míg le nem esett róla, mekkora egy fail. Kb olyan fejlettségi szinten van, mint anno a php3. Pihentetni kellene legalább fél évtizedet, és majd megnézni utána.

[ Szerkesztve ]

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8667) Jim-Y válasza _ak_ (#8664) üzenetére


Jim-Y
veterán

const account: IAccount = useAccount(accounts[0] || {} as IAccount);

(#8668) polymorphin válasza coco2 (#8666) üzenetére


polymorphin
csendes tag

?

(#8669) coco2 válasza polymorphin (#8668) üzenetére


coco2
őstag

>?

??

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8670) martonx válasza coco2 (#8666) üzenetére


martonx
veterán

Tényleg nem kötelező ám mindenhez hozzászólni. Hidd el csomószor okosabb maradsz, ha nem szólalsz meg. :K

[ Szerkesztve ]

Én kérek elnézést!

(#8671) _ak_ válasza Silεncε (#8665) üzenetére


_ak_
addikt

Köszi, végül ez lett belőle:

const account: IAccount | null = useAccount(accounts[0] || {});
const customProp: string | undefined =
  account?.idTokenClaims?.extension_customProp;

Ahogy mondtad az AccountInfo lehet null is, emiatt a customProp lehet undefined is), amit használata előtt ellenőrzök, így a helyére került minden. :R

Jim-Y:

Kipróbáltam ezt is, de ugyan az maradt a figyelmeztetés.

coco2:

Távol álljon tőlem, hogy megmondjam a frankót, de ha engem kérdezne valaki, hogy érdemes-e a TS-el foglalkozni, akkor azt tanácsolnám, hogy ne is kezdjen bele semmibe anélkül, legalábbis, ha programozásból akar megélni és JS vonalon mozog.

Let's begin, de gozaimasu!

(#8672) martonx válasza _ak_ (#8671) üzenetére


martonx
veterán

Nekem nagyon vegyes a TS megítélésem. Nodejs projektbe nem kezdenék bele TS nélkül. Miközben kliens oldalon meg nem szopatnám magam TS-el. Kivétel react, angular amik már önmagukban is szopások, azoknál a TS már inkább ismét javít a szarkupacon.

Én kérek elnézést!

(#8673) nevemfel válasza coco2 (#8666) üzenetére


nevemfel
senior tag

Én is maradok az ES5-nél, bár kétségtelen, volt, mikor elcsábultam az ES6 feature-it tekintve. for...of, rest - spread operátor, natív module kezelés, destructuring. A többi szemét.

TS-t egyszer megnéztem, és arra jutottam, hogy nem érdekel. A problémák, amik fejlesztés közben jellemzően felmerülnek, a TS ezek közül nem old meg semmit.

[ Szerkesztve ]

Rally against apathy draws small crowd

(#8674) Silεncε válasza nevemfel (#8673) üzenetére


Silεncε
őstag

Promise, arrow function szemét? Hát lelked rajta

[ Szerkesztve ]

(#8675) nevemfel válasza Silεncε (#8674) üzenetére


nevemfel
senior tag

Hát, promise még hagyján, de arrows functions? Mi haszna van, azon kívül, hogy 8, neadjaisten 10 karakter helyett kettő karaktert kell begépelni? Cserébe a szintaxista egy rakás szemét.Tudom, this binding ... nem használok this-t.

[ Szerkesztve ]

Rally against apathy draws small crowd

(#8676) Silεncε válasza nevemfel (#8675) üzenetére


Silεncε
őstag

Én sem használok this-t (illetve mostanában nem, régebben Angularhoz kellett, de a React óta sztem egyszer sem használtam). De mondom, lelked rajta. Én ES6-on kezdtem, szóval nekem ezek a feature-ök már alapvetőek

[ Szerkesztve ]

(#8677) nevemfel válasza Silεncε (#8676) üzenetére


nevemfel
senior tag

De mondom, lelked rajta.

A lelkem az úré. Minden másra ott van a javascript. :))

Szerk: Én C64 basic-en kezdtem, aztán jött a Pascal 6-7, ES1-2-3-5, PHP 3-4-5-7, hozzá a JAVA 1.2, és egyszer kénytelen voltam alámerülni a COBOL gyönyöreibe. Szóval lehet, hogy ez csak valamiféle generációk közti megnemértés.

[ Szerkesztve ]

Rally against apathy draws small crowd

(#8678) nevemfel válasza nevemfel (#8677) üzenetére


nevemfel
senior tag

Kihagytam pár assembly nyelvjárást. 6510, Z80, ilyen - olyan (jellemzően PIC, illetve Arduino) mikrokontrollert. De egyszer szívesen meghallgatnám a tapasztalataidat a TS használatával kapcsolatban. Sosem szégyen tanulni az okosabbtól-tapasztaltabbtól. Nem szarkasztikusan értem, tényleg komolyan gondolom.

Rally against apathy draws small crowd

(#8679) coco2


coco2
őstag

Jelenleg van egy <form> a weblapon, submit post-al küldi az adatokat. Leszedném a form-ot a lapról, és submit helyett button onclick-et használnék. Azon gondolkodom, hogy a location-el tudok-e post paramétereket küldeni (hogy a szerver oldal ugyan az maradhasson), vagy muszáj lesz a post-ot get-re cserélnem? A location-re post támogatást eddig nem találtam. Ha véletlenül van rá valami trükk, felvilágosításnak örülnék.

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8680) Silεncε válasza coco2 (#8679) üzenetére


Silεncε
őstag

Az miért nem jó, hogy fetch-el (vagy ha szélesebb támogatás kell, akkor a jóöreg XMLHttpRequest) csinálsz egy POST requestet a click eseményre? Miért kell ehhez a location?

nevemfel

okosabb-tapasztaltabb

Hát akkor sajnos rossz helyen kopogtatsz :D egyébként kb 2 évig használtam TS-t Angularral (ez már lassan egy éve, most egy pure JS-React projekten dolgozom), én szerettem. Az, hogy muszáj minden változóhoz/konstanshoz típusdeklarációt írni sztem csomót javit a kódon (vagy pl a generikusok, az is segített nekem egy csomószor). Bár az tény, hogy nem csodaszer ez se, TS-ben is lehet szar kódot írni ahogy a JS kód se feltétlenül rossz.

illetve amit még nagyon szeretek: nekem a VSCode a bevált editor, kb mindenhol azt használom. Ez ugye beépítetten hozza a TS-t, szóval pl ha van egy npm package-ben .d.ts, akkor az IntelliSense auto felismeri és az alapján segít.

[ Szerkesztve ]

(#8681) coco2 válasza Silεncε (#8680) üzenetére


coco2
őstag

Mert természetesen megtartanám az eredeti funkcionalitást. A <form> submit esemény lapot tölt újra.

Csúnya volt az eredeti gomb a form submit-hoz, lecseréltem image-re (a form elem bármi image-et is elfogad submit elemként). Viszont így nincs gombmegnyomás anim, ami bénán néz ki. Azért akarok nyomógombot.

Viszont akkor meg form submit nem lesz :) Szóval marad a window.location.assign(). De ehhez meg POST paramétert adni nem tudok.

GET paramétert tuti adni tudok hozzá, azt megnéztem. De ha tudok POST paramétereket adni hozzá valahogyan, jobban nézne ki, hogy a megjelenített oldal címbe nem kerülnek bele a get paraméterek. Nem mintha jelenleg túl sok lenne, de akkor is randa :O

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8682) Silεncε válasza coco2 (#8681) üzenetére


Silεncε
őstag

Ha ennyire kell, akkor tolsz egy location.reload-ot a then-ből?

Illetve ha kombinálod az eredeti ötletet, és a képet a button gyerekének teszed? Vagy a hátterének?

(nem akarlak mindenképp lebeszélni, csak ez nekem nagyon a funkció megerőszakolásának tűnik, ami sosem szerencsés + szerintem nem is lehet megcsinálni)

[ Szerkesztve ]

(#8683) martonx válasza coco2 (#8681) üzenetére


martonx
veterán

Ahogy leírták már FETCH-et kell erre használni.

Én kérek elnézést!

(#8684) nevemfel válasza coco2 (#8679) üzenetére


nevemfel
senior tag

Az ajaxot pont erre találták ki. Az, hogy XMLHttpRequest-et, Fetch API-t, vagy bármi mást használsz erre, az már implementációs részletkérdés.

Rally against apathy draws small crowd

(#8685) nevemfel válasza Silεncε (#8680) üzenetére


nevemfel
senior tag

Hát akkor sajnos rossz helyen kopogtatsz :D egyébként kb 2 évig használtam TS-t Angularral (ez már lassan egy éve, most egy pure JS-React projekten dolgozom), én szerettem.

Máris több tapasztalatod van vele, mint nekem.

Rally against apathy draws small crowd

(#8686) coco2


coco2
őstag

Köszönöm a tippeket mindenkinek, de a jelek szerint kommunikációs hibát véthettem, amikor nem hangsúlyoztam ki eléggé, hogy az a form egy login form, és a submit-nak újra _kell_ töltenie az oldalt. Van pár login paraméter, azokat raknám inkább post paraméterbe az oldal újratöltéshez, ahogy form submit-nál is volt. De az oldalnak újra kell töltenie (index page helyett application page kell login után, de csak utána).

Form submit gomb-on nem lehet képet cserélni. A submit elemet lehet image-re lecserélni. De akkor meg nincs gombnyomás anim. Ezért ne engem szidjatok, a html5-be a halom marhaság belefért, de egy normális form submit a jelek szerint meghaladta a tervezők képzelőerejét. Vagy csak simán sza*tak rá, nem tudom.

Xhr-ben el tudom kérni az új html-t stringben, igaz. Azt tudom háttérben intézni. Viszont akkor meg azzal lesz egy olyan problémám, hogyan cserélem le a megjelenített oldalt (az oldal egészét) egy változóban lévő stringre? Ilyet még nem csináltam. Lehet egyáltalán?

[ Szerkesztve ]

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8687) Rimuru válasza coco2 (#8686) üzenetére


Rimuru
veterán

Redirection messages

Vigyázat, csalok!

(#8688) Silεncε válasza coco2 (#8686) üzenetére


Silεncε
őstag

Ne haragudj, hogy ezen rugózok, de ezt ki tudnád fejteni jobban (hogy pontosan milyen HTML elementet használsz):

Form submit gomb-on nem lehet képet cserélni. A submit elemet lehet image-re lecserélni.

Ha sima <input>-ot, ezt próbáltad már: [link]?

[ Szerkesztve ]

(#8689) coco2 válasza Silεncε (#8688) üzenetére


coco2
őstag

A form submit eleme jelenleg ez:

<input type="image" src="login_button.png" name="submit_0">

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8690) coco2 válasza Rimuru (#8687) üzenetére


coco2
őstag

Őőőő nem egészen értem, mit kezdjek a hibakódokkal :F

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8691) polymorphin válasza coco2 (#8690) üzenetére


polymorphin
csendes tag

En nem teljsen ertem hogy mit szeretnel
1, Login formot soha ne kuldj GET-el
2, A gombnyomas animaciot szeritem meg lehet oldani CSS-el (hacsak nem egy arcon porgo ember a gomb :D )
3,"index page helyett application page kell login után, de csak utána" ennek semmi koze a front-end-hez ezt szerver oldalon kell intezni
4, Amit Rimuru linkelt azok nem hiba hanem status code-ok, nezd at ezt: HTTP Messages - HTTP | MDN (mozilla.org)
Tegyuk fel a felhasznalo helytelen adatokkal akar belepni akkor nem 200 OK-et kuldesz vissza szerverrol hanem 401 Unauthorized-et

(#8692) Zedz válasza nevemfel (#8673) üzenetére


Zedz
addikt

TS-t egyszer megnéztem, és arra jutottam, hogy nem érdekel. A problémák, amik fejlesztés közben jellemzően felmerülnek, a TS ezek közül nem old meg semmit.

Szoval meg nem dolgoztal nagy projekten, csapattal? :))

(#8693) Jim-Y


Jim-Y
veterán

Sziasztok,

A TypeScript es tarsai temakorhoz szeretnek hozzaszolni, mert felek, hogy ha egy kezdo olvassa a topikot akkor veletlenul egyoldalu velemenyt fog leszurni.

Kedves kezdo javascriptes

Amiket ebben a topikban olvasol velemenyeket mind szubjektiv velemenyek es kezeld is oket ugy. Semmit ne vegyel keszpenznek, hanem probalj meg tobb forrasbol utanajarni, probalj lehetoleg hiteles forrasokbol taplalkozni.

ES6 tema

Oszinten szolva almomban sem gondoltam volna, hogy 2021-ben meg van akinek ez nem alap, es tenyleg, ha nem hasznalsz ES6 featuroket akkor abba a szereny taborba tartozol aki meg mindig osregi javascriptet ir. Forras: [link]

Igy az elejen leszogeznem, hogy barki johet azzal, hogy ez is csak egy survey a sok kozul, ami teljesen igaz, de mig a topik nezetet egy kezdo 5-6 ember velemenye alapjan kenyszerul leszurni addig ezt a survey-t tobb 10 ezren toltottek ki vagyis sokkal inkabb relevans mint a te vagy az en szemelyes velemenyem egy kezdo szamara.

TypeScript tema


Ha egy ember egy sajat prokten dolgozik akkor megertem, hogy valaki nem latja a TS adta elonyok zomet. Ha viszont egy csapatban masokkal, produktivan kell dolgozni akkor a TS igenis nagyon sokat segit ebben.

Errol az oldalrol azt lehet leolvasni, hogy a Compile-to-JS nyelvek kozul a TypeScript ami leginkabb megy [link] Errol meg azt erdemes leolvasni , hogy az altalanos trendek szerint no az erdeklodes a TypeScript-re. Ez [link] azert erdekes mert a valaszadok tobbsege a Static Typing hianyat latja a legnagyobb hianyossagnak a nyelvben. Mit ad a TS a JS-hez? Static Typingot. Nem veletlen, hogy no a TS nemszerusege

TypeScript is exploding vagy egy GitHub statisztika

A szemelyes velemenyem az, hogy a TS elengedhetetlen ma egy munkat kereso szamara. Ha valaki koca-programozo es csak sajat szorakoztatasara programozik, akkor nem kell TS, ha valaki Freelancer akkor szerintem ki tudna tunni a tobbi freelancer kozul azzal, hogy TS-el statikusan tipusozott kodot ad az ugyfelnek, ha pedig valaki vallalati kornyezetben akar elhelyezkedni akkor kotelezo, mert igazabol nagyvallalati kornyezetben jon ki a TS igazi elonye, ami szerintem a kovetkezo(k):

- A nyelv analizalja a kododat igy kepes hibakat megtalalni benne. "When the TypeScript compiler compiles your code, it creates an Abstract Syntax Tree (AST) of it" forras. Ez egy csomo elonnyel jar. Peldaul emiatt sokkal jobb intellisense-t kapsz az IDE-ben emiatt tud olyan programozoi hibakra ramutatni amiket amugy nem vennel eszre

- Dokumentalja a kodod. Az hogy megirod egy fuggvenyhez a bemeneti es kimeneti ertekek tipusat egyben dokumentacios ertekkel is bir. Kinek? Magadnak kevesbe, mondhatnad, hisz te irtad a kodot tudod, hogy mukodik, de egy kollegad aki meg akkor nincs is a cegnel amikor a kodot irod, de majd neki kell atirnia, hat neki bizony sokat fog segiteni

- polimorf tipushelyes kodot tudsz irni. Mit jelent ez? Kepzeld el, hogy egy data-table widget-et fejlesztesz, amihez filter funkciot is kell irni. Nem tudod implementacio kozben hogy aki majd hasznalja a widgetet, a data-table-t az majd milyen tipusu oszlopokat fog felvenni de neked mar most ugy kell megirni a filter-t, hogy mukdojon stringekre, numberekre, arrayekre. Ha most beegetsz egy olyan kodot a widget-be ami az erteken valamilyen array function-t fog hasznalni az nem fog mukodni number tipusu ertekekre. Nyilvan ezt TS nelkul is meg lehet oldani, viszont a TS segit abban, hogy polimorf meg tudd fogalmazni a filter fuggvenyed.

- Mivel a TS compile-to-js ezert ha TS-t hasznalsz olyan JavaScript featuroket is hasznalhatsz mar ma, amit amugy nem tehetnel meg mert az adott syntax-sugar meg nincs szeleskoruen tamogatva a bongeszok altal. Hogyan? Meg tudod mondani a TS compilernek, hogy milyen verzioju JS-re forditsa a kodod

- Nem beszelve a sok apro nuanszrol amit kapunk a TS-el pl absolute path aliases, hogy csak egy hasznos dolgot emlitsek

---

En a munkamban mar most is mindenhol TS-t hasznalok, es nem is allnek neki TS nelkul egy uj projektnek, sajat projekteken meg vegyes, hogy hasznalok-e vagy sem. A projekt stilusa szabja meg. Egy blog-hoz nem hasznalnek mert ott kb csak statikus html oldalakat gyartok, kicsi a hibalehetoseg a JS kodban, mig pl ha egy Authorization Server-t probalok leprogramozni ott meg igen, mert ott nagy a hibalehetoseg amiben segit a TS. Arrol nem is beszelve, ha a projektet igy vagy mas emberek is hasznaljak -majd- akkor meg a tipusok amiket expozalsz sokat fognak segiteni masoknak.

(#8694) lanszelot


lanszelot
addikt

Hello,
Élelmiszerek listáját, hogyan tudom különböző diéták szerintleszűrni?
Tömböt hozzak létre, és minden diétához adjam meg mely tömb elemek tartoznak?
De akkor ha több diéta van együtt, hogy szedem ki amit a másik diéta zár ki?
Vagy nem tömbbel kell megoldani?
Volna valakinek ötlete, hogyan oldható meg?
A legjobb az lenne, hogy egy elem bevitelekor adnám meg mely diétákban ture és melyekben false. De nem áll össze a fejemben ez hogyan/mivel oldható meg.

(#8695) martonx válasza lanszelot (#8694) üzenetére


martonx
veterán

Felveszed az élelmiszerek listáját, és mindegyikhez megadod, hogy melyik diétához jó, illetve melyik zárja ki.
Utána, amikor szűrsz, már csak azokat az ételeket kell elővenned, amelyek az összes megadott diétához engedélyezettek, és semelyik megadott diétához nincsenek tiltva.
Ennyi.

Én kérek elnézést!

(#8696) lanszelot válasza martonx (#8695) üzenetére


lanszelot
addikt

Ezt tudom, hogy így kell, de mivel/hogyan oldom meg?
Felveszem - hova? Tömb?
Megadom - hogyan?

(#8697) coco2 válasza lanszelot (#8696) üzenetére


coco2
őstag

>hova? Tömb?
Object tömb a valószínűbb. De esete válogatja. Több külön tömb is lehet.

>hogyan?
Változókkal. Jellemzően.

កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។

(#8698) Silεncε válasza lanszelot (#8696) üzenetére


Silεncε
őstag

Listában tárolj objectumokat, valami ilyesmi:

{
name: "whatever";
possibleDiets: ["diet1", "diet2"];
}

utána filter.

Vagy ha nincs sok lehetőség, szebb egy ilyesmi:

{
name: "whatever";
diet1: true;
diet2: true;
}

és akkor utána ezekre is tudsz filterezni

(#8699) lanszelot válasza Silεncε (#8698) üzenetére


lanszelot
addikt

Köszönöm szépen :)

(#8700) Mr. Y


Mr. Y
senior tag
LOGOUT blog

Sziasztok!

Furcsa kérdést akarok feltenni, egyelőre elméleti alapokon.
Vegyünk alapul egy HTML Weboldalt, ID-kkel ellátott DIV-ekkel, CSS-ből eltűntetve.
A továbbiakban vannak itt gombok melyek megnyomásával a hozzájuk rendelt DIV JS-en keresztül láthatóvá válik.

Van mellette egy másik HTML Weboldal, ami rámutató linket tartalmaz az imént említett felépítéssel rendelkező oldalra. A feladat annyi lenne, hogy mikor erről az oldalról átnavigál a böngésző a Linknek köszönhetően a másik oldalra, akkor azon az oldalon már a betöltés során aktiválja az egyik gombot. Vagyis, amennyiben azzal az adott Linkkel nyitják meg az adott oldalt, ne érvényesüljön a CSS elrejtés, vagy legyen felülírva.

Ez így létező jelenség?

A példa kedvéért, ez a végeredmény oldal, ez pedig a rámutató oldal.

Előre is köszönöm a válaszokat!

But who is watching the guardians?

Copyright © 2000-2024 PROHARDVER Informatikai Kft.