Funguje TypeScript aj za run-time?

mmm

Re:Funguje TypeScript aj za run-time?
« Odpověď #60 kdy: 12. 10. 2018, 16:01:53 »
Zasa. Nemudrovať nad konkrétnym kódom. Otázka znie: zabezpečí mi definícia typu, že bude kontrolovaná otypovaná premenná aj za behu? Alebo parsovanie / pretypovanie / kontrolu na správny typ dodanej za behu, vopred neznámej za návrhu, si musím robiť sám, ručne si ju dopísať do kódu?

kontrola funguje jen uvnitř typescriptu. Když výsledný javascript voláte z javascriptu, žádná kontrola neprobíhá. Když uvnitř typescriptu načítáte vstup z konzole, dostanete string a typescript ohlídá jeho konverzi na číslo před použítím ve funkci, která vyžaduje číslo. Ta konverze zůstane i ve výsledném javascriptu.


Re:Funguje TypeScript aj za run-time?
« Odpověď #61 kdy: 12. 10. 2018, 16:05:47 »
Zasa. Nemudrovať nad konkrétnym kódom. Otázka znie: zabezpečí mi definícia typu, že bude kontrolovaná otypovaná premenná aj za behu? Alebo parsovanie / pretypovanie / kontrolu na správny typ dodanej za behu, vopred neznámej za návrhu, si musím robiť sám, ručne si ju dopísať do kódu?

kontrola funguje jen uvnitř typescriptu. Když výsledný javascript voláte z javascriptu, žádná kontrola neprobíhá. Když uvnitř typescriptu načítáte vstup z konzole, dostanete string a typescript ohlídá jeho konverzi na číslo před použítím ve funkci, která vyžaduje číslo. Ta konverze zůstane i ve výsledném javascriptu.

Čiže TS kód ide spustiť v tom tvare ako je napísaný? A čítať napríklad z konzoly? On na neho už existuje natívny interpreter a nemusí sa pred behom transpilovať do JS?

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Funguje TypeScript aj za run-time?
« Odpověď #62 kdy: 12. 10. 2018, 16:12:32 »
Kód: [Vybrat]
function naDruhu (num) {
  return num * num
}

Táto funkcia si vôbec nestráži typ a pokiaľ ju niekto zavolá so zle zadaným parametrom z formulára, napríklad v tvare naDruhu('Jožo'), funkcia dá nečakaný výsledok. Použijem teda akože TS a nadefinujem typ:

Kód: [Vybrat]
function naDruhu (num: number) {
  return num * num
}

Nedal som do kódu žiadnu kontrolu, pretypovanie, či parsovanie parametru. Lebo veď som nadefinoval typ parametru a spolieham naň. Že to nie je presný syntax TS nie je dôležité. Dôležité je, na čo sa pýtam, že čo sa udeje pri transpilácii. Lebo pokiaľ sa po transpilácii vyššie uvedená funkcia s typmi jednoducho transpiluje do čistého JS tak, že sa len odstránia definície typov, čiže naspäť do pôvodného tvaru,

Kód: [Vybrat]
function naDruhu (num) {
  return num * num
}

tak mi je TS a celé typy na kokot, akurát tak mám hinty počas písania a kontrolu počas transpilácie, ktorá však nič zlé nezistí, lebo nevie dopredu, či mi užívateľ zadá vo formulári platné číslo. Keby však robila to, čo chcem vedieť či naozaj robí, či definícia typu zároveň zabezpečí, že pri transpilácii sa môj kód rozšíri o kontrolu typu, aby fungoval aj počas behu aplikácie, takže napríklad takto:

Kód: [Vybrat]
// moja definícia
function (num: number) {
  return num * num
}

// po transpilácii napríklad takto,
// ako tu písal iný, s parseInt
function (num) {
  if (!parseInt(num)) throw new Error()
  return num * num
}

Už to tu zaznělo. Místo držkování čítaj.

1. Takto se to nepřeloží, protože TS je staticky typovanej.
2. Typy jsou transitivní, takže by si měl ohlídat, že uvedenou funkci zavolám s výrazem odpovídajícího typu.
3. TS neohlídá všechno (pokud mi něco neuniklo), takže pokud mu něco "vnutíš" tak slítne. Ale obvykle máš vstupy otypovaný, tudíž víš, že ten formulář ti vrátí string, a tak tě to přinutí k tomu ho přetypovat na int. Při normální práci ti to nespadne.

Re:Funguje TypeScript aj za run-time?
« Odpověď #63 kdy: 12. 10. 2018, 16:20:38 »
Kód: [Vybrat]
function naDruhu (num) {
  return num * num
}

Táto funkcia si vôbec nestráži typ a pokiaľ ju niekto zavolá so zle zadaným parametrom z formulára, napríklad v tvare naDruhu('Jožo'), funkcia dá nečakaný výsledok. Použijem teda akože TS a nadefinujem typ:

Kód: [Vybrat]
function naDruhu (num: number) {
  return num * num
}

Nedal som do kódu žiadnu kontrolu, pretypovanie, či parsovanie parametru. Lebo veď som nadefinoval typ parametru a spolieham naň. Že to nie je presný syntax TS nie je dôležité. Dôležité je, na čo sa pýtam, že čo sa udeje pri transpilácii. Lebo pokiaľ sa po transpilácii vyššie uvedená funkcia s typmi jednoducho transpiluje do čistého JS tak, že sa len odstránia definície typov, čiže naspäť do pôvodného tvaru,

Kód: [Vybrat]
function naDruhu (num) {
  return num * num
}

tak mi je TS a celé typy na kokot, akurát tak mám hinty počas písania a kontrolu počas transpilácie, ktorá však nič zlé nezistí, lebo nevie dopredu, či mi užívateľ zadá vo formulári platné číslo. Keby však robila to, čo chcem vedieť či naozaj robí, či definícia typu zároveň zabezpečí, že pri transpilácii sa môj kód rozšíri o kontrolu typu, aby fungoval aj počas behu aplikácie, takže napríklad takto:

Kód: [Vybrat]
// moja definícia
function (num: number) {
  return num * num
}

// po transpilácii napríklad takto,
// ako tu písal iný, s parseInt
function (num) {
  if (!parseInt(num)) throw new Error()
  return num * num
}

Už to tu zaznělo. Místo držkování čítaj.

1. Takto se to nepřeloží, protože TS je staticky typovanej.
2. Typy jsou transitivní, takže by si měl ohlídat, že uvedenou funkci zavolám s výrazem odpovídajícího typu.
3. TS neohlídá všechno (pokud mi něco neuniklo), takže pokud mu něco "vnutíš" tak slítne. Ale obvykle máš vstupy otypovaný, tudíž víš, že ten formulář ti vrátí string, a tak tě to přinutí k tomu ho přetypovat na int. Při normální práci ti to nespadne.

Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

mmm

Re:Funguje TypeScript aj za run-time?
« Odpověď #64 kdy: 12. 10. 2018, 16:22:53 »
Čiže TS kód ide spustiť v tom tvare ako je napísaný? A čítať napríklad z konzoly? On na neho už existuje natívny interpreter a nemusí sa pred behom transpilovať do JS?


Takže v Jave budem čítať vstup, čo len z konzoly, a pri pokuse priradiť načítaný string do premennej typu int mi program nespadne na runtime error?

jestli jsi myslel načítání uživatelského vstupu třeba funkcí readline v nodejs, tak typescript na vstupu dostane string a donutí tě konvertovat ho na číslo, ta konverze zůstane ve výsledném javascriptu. Vyzkoušení by tě stálo 5 minut.

jestli jsi myslel volání výsledné javascriptové funkce z konzole REPLu, tak tam samozřejmě kontroly nefungují.


BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Funguje TypeScript aj za run-time?
« Odpověď #65 kdy: 12. 10. 2018, 16:23:03 »
Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

Tuto odpověď jsi už dostal, co chceš víc?

mmm

Re:Funguje TypeScript aj za run-time?
« Odpověď #66 kdy: 12. 10. 2018, 16:26:03 »
Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

ne.

Re:Funguje TypeScript aj za run-time?
« Odpověď #67 kdy: 12. 10. 2018, 16:31:15 »
Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

ne.

Takže za runtime mi nie je TS nič platné?Dokonca, všeobecne mi za runtime ani v staticky, ani v dynamicky typovanom jazyku s TS nie sú typy nič platné a musím si typy vstupných hodnôt ustrážiť sám?

Tomáš Roll

Re:Funguje TypeScript aj za run-time?
« Odpověď #68 kdy: 12. 10. 2018, 16:34:37 »

Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

Ne, nedopíše. A k čemu by ti asi tak byla? Aby to spadlo s pěknější hláškou?

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Funguje TypeScript aj za run-time?
« Odpověď #69 kdy: 12. 10. 2018, 16:35:46 »
Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

ne.

Takže za runtime mi nie je TS nič platné?Dokonca, všeobecne mi za runtime ani v staticky, ani v dynamicky typovanom jazyku s TS nie sú typy nič platné a musím si typy vstupných hodnôt ustrážiť sám?

ne,

TS je platné, nemusíš si typy vstupních hodnot strážit sám.

Tomáš Roll

Re:Funguje TypeScript aj za run-time?
« Odpověď #70 kdy: 12. 10. 2018, 16:36:11 »

Takže za runtime mi nie je TS nič platné?Dokonca, všeobecne mi za runtime ani v staticky, ani v dynamicky typovanom jazyku s TS nie sú typy nič platné a musím si typy vstupných hodnôt ustrážiť sám?

A co by tak runtime kontrola jako měla udělat?

mmm

Re:Funguje TypeScript aj za run-time?
« Odpověď #71 kdy: 12. 10. 2018, 16:38:20 »
Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

ne.

Takže za runtime mi nie je TS nič platné?Dokonca, všeobecne mi za runtime ani v staticky, ani v dynamicky typovanom jazyku s TS nie sú typy nič platné a musím si typy vstupných hodnôt ustrážiť sám?

píšeš, že používáš Flow. Typescript je náhrada za Flow. Nic víc.

Re:Funguje TypeScript aj za run-time?
« Odpověď #72 kdy: 12. 10. 2018, 16:45:43 »
Otázka je jednoduchá a čakám jednoduchú odpoveď. Áno, definovanie typu zabezpečí pri transpilácii dopísanie kontroly na daný typ / Nie, pri transpilácii sa kontrola na daný typ do kódu nedopíše.

ne.

Takže za runtime mi nie je TS nič platné?Dokonca, všeobecne mi za runtime ani v staticky, ani v dynamicky typovanom jazyku s TS nie sú typy nič platné a musím si typy vstupných hodnôt ustrážiť sám?

píšeš, že používáš Flow. Typescript je náhrada za Flow. Nic víc.

Vyhol si sa odpovedi. Navyše,  Flow nie je náhrada, a ani ho nepoužívam. Nie v tom zmysle, že si v JS definujem typy. Len nad kódom, bez typov, po dopísaní spustím automatickú kontrolu od Flow. Takže? Skúsiš odpoveď na moju predošlú otázku? Alebo ani netreba, lebo mám pravdu a len sa ti to blbo pripúšťa?

Tomáš Roll

Re:Funguje TypeScript aj za run-time?
« Odpověď #73 kdy: 12. 10. 2018, 16:51:07 »

píšeš, že používáš Flow. Typescript je náhrada za Flow. Nic víc.

Typescript přidává generiku. Má javascript generiku?

Re:Funguje TypeScript aj za run-time?
« Odpověď #74 kdy: 12. 10. 2018, 16:54:06 »

Takže za runtime mi nie je TS nič platné?Dokonca, všeobecne mi za runtime ani v staticky, ani v dynamicky typovanom jazyku s TS nie sú typy nič platné a musím si typy vstupných hodnôt ustrážiť sám?

A co by tak runtime kontrola jako měla udělat?

Skontrolovať správnosť typu hodnoty zo vstupu počas behu programu? Aby funkcia ktorá tú hodnotu obdrží nespôsobila pád programu v prípade staticky typovaného jazyka, alebo nevrátila nezmysel v prípade dynamicky typovaného?