手を動かしながら学ぶ TypeScript 2부 -- 応用的な型
10469 단어 typescript
왜
応用的な型も網羅して噛み砕きたくなった.
前回より応用的.
参考
手を動かしながら学ぶ TypeScript
by SmartHR
SECTION-025 TypeScript の型や構文紹介
P.277 ~
https://www.amazon.co.jp/%E6%89%8B%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-TypeScript-%E6%B8%A1%E9%82%89%E6%AF%94%E5%91%82%E6%A8%B9-ebook/dp/B09KZJXDN1
目次
인터페이스(확장)
interface Creature {
id: string
}
interface Person extends Creature {
name: string,
power: number,
}
const kaede: Person = {
id: '0902',
name: 'kaede',
power: 70,
}
id のみの Creature 클라스を정의
それを継承して更に 이름, 권력 を追加した 사람
この Person を使うと、id, name, power の型を使える(必須).
유형 (&)
型Eirias.interface とは違って
=
が必要.type Creature = {
id: string
}
type Person = Creature & {
name: string,
power: number,
}
const kaede: Person = {
id: '0902',
name: 'kaede',
power: 70,
}
형에이리아스의 타입으로도
인터페이스
Person Extends Creature
と同じように
Person = Creature &
で Creature の継承ができた.
なお、先ほど의 인터페이스와 変数名が同じなので、
同じ階層に先ほどのファイルがあると別名ファylでも重複エラーになるので注意.
수업
class Student {
fullName: string
constructor(firstName:string, lastName:string,) {
this.fullName = firstName+lastName
}
}
const Tanaka = new Student('Tanaka', 'Taro')
console.log(Tanaka.fullName);
class でも書ける.
fullName を外部からアクセスできる形で定義して
생성자 のなかで計算させる.
継承して new で作り、fullName にアクセスする ことができる.
ts-node class.ts
TanakaTaro
実行すると fullName が返ってくる.
しかし、この状態だと lastName は private なので
console.log(Tanaka.lastName);
악세스루와
Property 'lastName' does not exist on type 'Student'
학생 にはないというエラーが出る.
constructor(firstName:string, public lastName:string,) {
this.fullName = firstName+lastName
}
だが, コンストラクタで定義するときに public をつけると
ts-node class.ts
TanakaTaro
Taro
콘스트라크타의 중신으로 も아크세스로 돕겠습니다.
초록/구현
用途不明
노동 조합
どちらかが入る型.
3 つ以上も作れる.
stringNullCheck 가 false の場合、
全ての型は undfined と null のユニオンになる.
type stringOrNumber = string | number
const id = 1234
const userId = '1234'
절대
何も入らない.
let NoUser: never
NoUser = undefined
Type 'undefined' is not assignable to type 'never'
정의되지 않은 すらも入らない.
유형 설명
https://qiita.com/irico/items/9d71060e52ffc1e79962
let age = 12
const gender = 'male'
age = gender as any
console.log(age);
console.log(typeof age);
ts-node assertion.ts
male
string
をつける 이것저것으로
最初決めた型を変更して別の型の中身を入れられてしまう.
type teacher = {
licenseId: string,
licenseActiveYear: number,
}
// const BadTeacher:teacher = {}
const NoLicenseTeacher = {} as teacher
console.log(NoLicenseTeacher);
ts-node assertion.ts
{}
また、このように必須のプロパティも無視して型を利用で きてしまう.
BadTeacher のように、普通に 선생 型を利用して空で作成すれば
当然必須の型がないので エラーになる.
しかし、NoLicenseTeacher では as で上書きしてるので teacher の型を使っていてもエラーが出ない!
TypeScript는 이를 지원합니다.
Reference
이 문제에 관하여(手を動かしながら学ぶ TypeScript 2부 -- 応用的な型), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/shou-wodong-kasinagaraxue-bu-typescript-part-2-ying-yong-de-naxing-321d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)