private fun deviceId(): String? {
        val deviceIdKey = "makeDeviceID"
        val sharedPreferences = getSharedPreferences("AppDate", 0)
        var deviceId = sharedPreferences.getString(deviceIdKey, null)
        if (deviceId == null) {
            deviceId = retrieveDeviceId()
            if (deviceId == null) {
                deviceId = retrieveAndroidIdOrGenerateUUID()
            }
            val editor = sharedPreferences.edit()
            editor.putString(deviceIdKey, deviceId)
            editor.commit()
        }
        return deviceId
    }


private fun retrieveDeviceId(): String? {
    return try {
        val telephonyManager =
            this.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        if (Build.VERSION.SDK_INT < 26) {
            telephonyManager.deviceId
        } else {
            telephonyManager.imei
        }
    } catch (e: Exception) {
        // Handle exception (log if necessary)
        null
    }
}

private fun retrieveAndroidIdOrGenerateUUID(): String? {
    try {
        val androidId = Settings.Secure.getString(
            this.contentResolver,
            Settings.Secure.ANDROID_ID
        )
        if (androidId != null && androidId.isNotEmpty()) {
            return androidId
        }
    } catch (e: Exception) {
        // Handle exception (log if necessary)
    }
    return UUID.randomUUID().toString().replace("-".toRegex(), "")
}

TypeScript vs JavaScript

Static Types(set during development) - 오류를 개발하는 중간에 체크 vs Dynamic types(resolved at runtime) - 오류를 런타임을 하여야 알수 있음

 

프로그램이 유용하려면, 가장 간단한 데이터 단위로 작업 할 수 있어야 하며, TypeScript에서는 JavaScript에서 기대하는 것과 동일한 타입을 지원하기 위해 추가적인 열거 타입이 제공된다.

 

TypeScript에서 프로그램 작성을 위해 제공되는 기본타입 

JavaScript 기본 자료형을 포함(Superset), ECMAScript 표준에 따른 기본 자료형 6가지

 

- boolean, number, string, null, undefined, symbol(ES6이후에 추가)

- Array(Object 형)

- 프로그래맹을 도울 몇 가지 타입(any, void, never, unknown, enum)

 

Primitive types

오브젝트와 레퍼런스형태가 아닌 실제 값을 저장하는 자료형을 말한다. 즉 메모리에 주소가 아닌 선언된 자료형 그대로 데이터를 저장하고 있는 자료형을 말하며, 자바스크립트 처리 방식으로 Primitive 형의 내장 함수를 사용가능하다. 

 

 

 

 

'TypeScript' 카테고리의 다른 글

[TypeScript] 타입스크립트란?  (0) 2023.01.16

자바스크립트에 타입이 추가된 개념?

  • 자바 스크립트에 타입을 추가하여 자바스크립트를 확장 시킨다.
  • 실행 전 자바스크립트를 해석함으로 사용자의 소스를 수정하는 시간을 절약할 수 있다.
  • 모든 브라우저, 운영체제, 자바스크립트 실행 환경에서 제공하는 오픈소스이다.

TypeScript = Language

 

  • 자바스크립트에 있는 기능을 강화시키고 타입이라는 개념이 추가
  • 순수한 자바스크림트로 컴파일 (ts -> js)
  • 타입스크립트는 'Programming Language 언어'
  • 타입 스크립트는 'compiled Language'
    1. 전통적인 Compiled Language와는 다른 점이 많음
    2. 'Transpile'이라는 용어를 사용하기도 함

 

※ 자바스크립트는 'Interpreted language' 

 

 

Compiled  vs  Interpreted

컴파일이 필요함 컴파일이 필요하지 않음
컴파일러가 필요함 컴파일러가 필요하지 않음
컴파일하는 시점함 컴파일하는 시점하지 않음
컴파일된 결과물을 실행 코드를 실행하는 시점
컴파일된 결과물을 실행하는 시점 코드를 실행하는 시점 = 런타임



타입스크립트 프로젝트 설정

 

// 프로젝트 생성
mkdir tsc-project
cd tsc-project

// package.json 파일 생성
npm init -y

// 타입스크립트는 런타임에서 필요하지 않음으로 -D를 붙인다.
npm i typescript -D

// tsconfig.json 파일 생성
npx tsc -init

package.json

npm 환경에서 프로젝트에서 필요한 패키지들을 관리

 

typeScript

프로젝트 컴파일하는 데 필요한 루트 파일과 컴파일러 옵션을 지정

 

'TypeScript' 카테고리의 다른 글

[TypeScript] TypeScript vs JavaScript, Primitive Types  (0) 2023.01.17

+ Recent posts