typescript variables
// There are 3 basic types in Typescript
var isDone: boolean = false;
var age: number = 42;
var myname: string : "Anders";
chcek
console.log(isDone)
console.log(age)
console.log(myName)
null vs undefined
//print null
var emptyVariable = null;
console.log(emptyVariable);
// prints undefined
var newVariable;
console.log(newVariable);
collection
// list
var list: number[] = [1,2,3];
var list: Array<number> = [1,2,3];
Function concept
function sayMyName (name: string){
alert('name:' + name);
console.log('function sayMyName was called');
}
sayMyName('function sayMyName was called');
function addTwoNumber(a: number, b: number) {
return a + b;
}
alert(addTwoNumber(2, 3));
var f1 = function(i: number): number {return i * i;}
var f2 = function(i: number) { return i * i;}
var f3 = (i: number): number => { return i * i;}
var f4 = (i: number) => {return i * i;}
var f5 = (i: number) => i * i;
if conditions
var homeworkDone : boolean = true;
// if 괄호 안에는 참 혹은 거짓 표현만 올 수 있음.
// == 는 같은지 다른지 표현
if (homeworkDone == true ){
alert('Then you can play from now.')
}
var age: number = 15;
if(age > 20 ){
alert('Then you can play adult.');
} else {
alert('You are not an adult.')
}
var kor: number = 60;
var eng: number = 80;
if ( kor > 70 && eng > 70){
console.log('1');
} else {
console.log('2');
}
var score = 'C';
switch (score) {
case 'A':
console.log('A');
break;
case 'B':
console.log('B');
break;
case 'C':
console.log('C');
break;
default:
console.log('default')
break;
}
Loops
var i;
// i는 0부터 시작해서 1씩 증가한다. 3보다 작은 상황에서만 반복을 계속한다.
for (i = 0; i < 3; i = i + 1){
console.log(i);
}
collection Loop
var myArray: string[] = ["A","B","C"];
for ( var i = 0; i < myArray.length; i++){
console.log("index: " + i + " -> " + myArray[i])
}
while
var i = 10;
// i가 0보다 큰 상황에서 계속 반복한다.
while (i > 0){
console.log(i + " left");
// 매번 1씩 감소시킨다. 즉, 언젠가는 반복이 멈추게 된다.
i -= 1;
}
break VS continue
var i = 10;
while (true) {
console.log(i + " left");
i -= 1;
if (i == 0){
break;
}
}
for (var i = 0; i < 10; i++){
if(i % 2 == 0){ //i가 짝수
continue;
}
console.log(i + ' is an odd number.');
}
Object
var emptyObject = {};
var personObject = {
firstName = "John",
lastName = "Smith"
}
personObject["salary"] = 14000
for (var member in personObject){
if(personObject.hasOwnProperty(member)){
console.log("the member " + member +
" of personObject is" + personObject[member])
}
}
Interface
Interface = object에 대한 타입
여러 개의 함수와 여러 개의 변수 등이 구조적으로 어떻게 결합되어야 하는지에 대한 약속
하나의 함수가 가져야 할 구조에 대한 약속
interface Person {
name: string;
age?: number; // optional 선택사항
move(): void;
}
var person: Person = {
name: "John",
move: () => { }
}
var person2: Person = {
name: "John",
age: 42,
move: () => { }
}
var person3: Person = {
name: "John",
age: true
}
▶ Person3에는 move 라는 함수가 없고, age에 대한 타입이 맞지 않아서 오류
// Interfaces can also describe a function type
interface SearchFunc {
(source: string, substring: string): boolean;
}
// Only the parameters' types are important, names are not important.
var mySearch: SearchFunc;
mySearch = function (src: string, sub: string){
return src.search(sub) != -1;
}
▶ 입력은 string으로 받고, 결과같음 boolean으로 받음
▶ != -1 값이 같지 않을때 참을 반환
Class
Class = 실제 세계의 물체를 표현하는데 사용
* 정보(변수)와 행동(함수)
인터페이스와 차이점
* Constructor
* 함수의 내용을 꼭 써야 함
Class Point {
x: number;
constructor(x: number, public y: number = 0 ){
this.x = x;
}
dist() {
return Math.sqrt(this.x * thix.x + this.y * this.y)
}
static origin = new Point(0, 0);
}
var Point1 = new Point(10, 20);
var Point2 = new Point(25)
static 한번 만들고 변하지 않는 값
어떤 함수인지 반드시 써줘야함. 직관적으로 작성됨.
interface Point {
x: number;
y: number;
dist: number;
}
var origin: Point = {
x: 0, y: 0,
dist: () => Math.sqrt(this.x * thix.x + this.y * this.y)
}
var Point1: Point = {
x: 10, y: 20,
dist: () => Math.sqrt(this.x * thix.x + this.y * this.y)
}
var Point2: Point = {
x: 25, y: 0,
dist: () => Math.sqrt(this.x * thix.x + this.y * this.y)
}
인터페이스는 클래스와 다르게 변수를 만들든 함수를 만들든 구조를 잡는데 사용됨.
Callback
* 넘길 수 있는 실행가능한 코드 조간
* 원하는 시간이나 조건에 그 코드 조각이 실행되기 원할때
var callback = function() {
alert('callback was exe')
}
setTimeout(callback, 3000)
setTimeout(function(){
alert('callback was exe')
})
타입스크립트 플레이그라운드
'Frontend > Typescript' 카테고리의 다른 글
typescript 설치부터 사용법 정리 (0) | 2021.05.24 |
---|---|
react typescript webpack 기본 설치 및 세팅하기 (0) | 2021.05.11 |
번들링 속도 개선하기(Feat. React, Typescript, Webpack) (0) | 2021.03.08 |