분류 전체보기 1341

타입 별칭

/* interface Person { name: string; age: number; } */ type Person = { name: string; age: number; } var seho: Person = { name: '세호', age: 30 } type MyString = string; var str: MyString = 'hello' //타입을 사용하는 모든 곳에서 별칭을 사용해서 붙일 수 있다. type Todo = { id: string; title: string; done: boolean; }; function getTodo(todo: Todo) { } type을 사용하면 명확하게 어떤 타입을 사용해야 하는지 파악할 수 있다. 타입을 사용하는 모든 곳에는 타입 별칭을 사용해서 붙일 수 있..

확장 함수

fun String.first(): Char { //확장대상.메서드명, 확장대상.변수명 을 써서 확장함수를 작성할 수 있다. //확장함수는 항상 자바코드로 변환하면, 자기 자신을 첫번쨰 인자로 받는다. return this[0] //함장함수 내부에서 쓰이는 this 를 리시버, 수신자 객체라 부른다. } fun String.addFirst(char: Char): String { return char + this.substring(0) } class MyExample{ fun printMessage() = println("클래스 출력") } //fun MyExample.printMessage() = println("확장 출력") //기존에 존재하는 메서드를 확장함수로 정의한다면? fun MyExample...

실드 클래스

하나의 상위 클래스, 인터페이스에서 하위 클래스 정의를 제한할 때 사용한다 sealed class Developer { abstract val name: String abstract fun code(language: String) } data class BackendDeveloper(override val name: String) : Developer() { override fun code(language: String) { println("저는 백엔드 개발자입니다 ${language}를 사용합니다") } } data class FrontendDeveloper(override val name: String) : Developer() { override fun code(language: String) { ..

싱글톤과 동반객체

싱글톤 싱글톤 패턴은 클래스의 인스턴스를 하나의 단일 인스턴스로 제한하는 디자인 패턴이다. 싱글톤 패턴의 제약사항 직접 인스턴스화 하지 못하도록 생성자를 private로 숨긴다. getInstance()라는 클래스의 단일 인스턴스를 반환하는 static 메서드를 제공한다. 멀티-스레드 환경에서도 안전하게 유일한 인스턴스를 반환해야 한다. 구현 방법 DCL(JVM환경에서는 거의 사용 안 함) Enum 싱글톤(이펙티브 자바에서 소개) 이른 초기화(Eager) 지연 초기화(Lazy) 이른 초기화 public class Java_Singleton { private static final Java_Singleton INSTANCE = new Java_Singleton(); private Java_Singleton..

데이터 클래스

데이터 클래스 란 데이터를 보관하거나 전달하는 목적을 가진 객체를 만들 때 사용한다. 자동으로 만들어 주는 함수 목록 equals() hashCode() toString() componetN(), copy() 자바에서는 주로 Lombok을 사용한다(jdk15 이상부터는 record라는 이름으로 추가한다) 데이터 클래스가 필요한 이유 //데이터를 보관하거나, 전달하는 목적을 가진 객체를 만들 때 사용한다. //equals, hashCode, toString, componentN, copy 함수를 자동으로 만들어 준다. //주로 자바에서는 lombok을 쓰거나 15에서는 record를 사용한다. //디컴파일 = tools-> kotlin -> kotlin Bytecode data class Person(va..

컬렉션

컬렉션 타입 코틀린 표준 라이브러리는 기본 컬렉션 타입인 List, Set, Map을 제공한다. 컬렉션은 두가지 종류로 나뉜다. 불변 컬렉션(Immutable) : 읽기 전용 컬렉션 가변 컬렉션(mutable) : 삽입, 수정, 삭제와 같은 쓰기 작업이 가능한 컬렉션 컬랙션 생성 방법 fun main() { // immutable val currencyList = listOf("달러", "유로", "원") //한번 생성하면, 쓰기/수정/삭제 할 수 없다 //mutable /* val mutableCurrencyList = mutableListOf() mutableCurrencyList.add("달러") mutableCurrencyList.add("유로") mutableCurrencyList.add("원"..

인터페이스

변수를 정의하는 인터페이스 interface User{ age: number; name: string; } //변수에 인터페이스를 적용하는 방법 var seho: User ={ //반복되는 타입에 대해서 하나의 인터페이스를 정의해서 동작시킬 수 있다. age: 33, name: '세호' } 인터페이스를 정의해, 공통적으로 동작해야 하는 클래스의 정의를 할 수 있다. 변수에 인터페이스를 정의하면, eslint에서 해당 인터페이스의 필드 값을 구현하라고 알려준다. 함수의 인자를 정의하는 인터페이스 //함수에 인터페이스 활용 function getUser(user:User){ //이 함수는 특정 형식을 중시하는 데이터만 받겠다 console.log(user) } const usr = { name: '캡틴', ..

함수 타입

파라미터, 반환 값 //함수의 파라미터에 타입을 정의하는 방식 /* function sum(a: number, b: number) { // a, b 두개의 number 타입을 인자로 받아 number 타입을 리턴한다 //숫자들 끼리 더하기 떄문에 반환 값은 반드시 number 타입으로 타입 추론을 한다 return a + b; } sum(10, 20) */ //함수의 반환 값에 타입을 정의하는 방식 function add(): number { return 10 } //함수에 타입을 정의하는 방식(종합) function sum(a: number, b: number): number { return a + b } 함수의 파라미터 타입을 정의하는 방식으로는 파라미터 뒤에 타입이 오면 된다. 정수 + 정수는 반드..

기본 타입

타입 스크립트로 변수나 함수와 같은 자바스크립트 코드에 타입을 정의할 수 있으며, 기본 타입에는 크게 12가지가 있다. Boolean Number String Object Array Tuple Enum Any Void Null Undefined Never 문자열, 숫자열, 배열 // JS 문자열 선언 //var str = 'hello' //TS 문자열 선언 //const, let을 사용해야한다 const str: string = 'hello' //왼쪽 변수는 문자열로 선언 하겠다. //TS 숫자형 선언 let num: number = 10 //TS 배열 타입 선언 -> 어떤 타입만 들어올지도 선언해 주어야 한다 let arr: Array = [1, 2, 3] let heroes: Array = ['Cap..

타입스크립트 시작하기

TypeScript를 Javascript로 변환하기 function sum(a: number, b: number): number { return a + b } sum(10, 20) //ts -> js 파일로 변환하는 작업을 compile이라고 한다. npm i typescript -g tsc index.ts #변환할 ts 파일 TypeScript -> Javascript으로 변환하는 과정을 compile이라고 한다. 변환 후에는 js파일이 생성된다. 타입 스크립트 컴파일 설정하기 https://www.typescriptlang.org/tsconfig TSConfig Reference - Docs on every TSConfig option From allowJs to useDefineForClassFie..