Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- array
- map
- app:compiledebugkotlin
- javascript
- 배열중복요소제거
- 안드로이드빌드에러
- 리액트네이티브아이콘
- 슬라이딩윈도우
- supabase 페이지네이션
- set
- reactnative
- async
- 글또10기
- 상속
- app.post
- Spring
- 스크롤이벤트
- Filter
- mainapplication.kt
- generic
- 이진탐색
- interface
- TS
- meatadata
- extends
- Next.js
- react
- 페이지네이션
- 타입스크립트
- materialicons
Archives
- Today
- Total
rhanziy
TS - 타입스크립트 셋팅 및 필수문법(powershell 보안 오류) 본문
자바스크립트는 타입에 관대하기 때문에 큰 프로젝트할 때 예상치 못한 에러나 버그가 발생할 수 있다.
그래서 엄격한 타입룰을 지정해주면서 더 정확한 에러메세지를 얻기위해 타입스크립트를 사용함.
설치
1. 일단 Node.js 최신버전, VScode 에디터오픈
2. 터미널 오픈 후 npm install -g typescript
3. 코드 짤 작업폴더 만들고 에디터에서 오픈
4. 작업폴더에 .ts로 끝나는 파일 만들고 사용시작하면됨.
여기서 .ts 파일은 브라우저에서 알아듣지 못하기 때문에 js파일로 변환작업이 필요한데,
터미널에 tsc -w 를 입력해두면 자동으로 js파일로 변환해준다.
그런데! 여기서 오류가 발생할 것. 아마도 이 시스템에서 스크립트를 실행할 수 없으므로~~ 어쩌구.
해결은 윈도우 파워쉘을 관리자권한으로 실행시킨 후,
set-executionpolicy remotesigned or unrestricted 입력 한담에 Y선택. 그럼 끗.
5. 이제 HTML파일 등에서 타입스크립트로 작성한 코드를 사용하려면 만들어진 .js파일 사용하면 된다.
React설치
-이미 있는 React 프로젝트에 설치할거면 터미널 오픈 후
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
- 그냥 React 프로젝트를 새로 만들거면 작업폴더 만들고 에디터와 터미널 오픈 후
npx create-react app 작명 --template typescript
셋팅
tsconfig.json 파일 생성 후 간단하게 셋팅해준다.
{
"compilerOptions": {
"target": "es5", // 어떤 버전의 js로 바꿔줄지 정하기
"module": "commonjs", // 파일간 import 문법을 구현할 때 어떤 문법을 쓸지 정하기
"noImplicitAny" : true, // any라는 타입이 의도치 않게 발생할 경우 에러띄우기
"strictNullChecks" : true // null, undefined 타입에 이상한 조작 시 에러띄우기
}
}
마지막 noImplicityAny 와 strictNullChecks 는 옵션사항~
리액트 프로젝트에서는 아래 코드로 셋팅
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}
기본문법
let str :string = "kim";
let any :string | number = "kim"; // union type
let arry :string[] = ['kim', 'park'];
let obj :{ name? : string } = { name: 'kim' }; // name? 속성은 옵션이예염
type Name = string | number;
let 이름 :Name = 'rani';
let user :string = 'kim';
let age :undefined | number = undefined;
let married :boolean = false;
let 철수 :(string|number|undefined|boolean)[] = [user, age, married];
let project :{member : string[], day :number, started : boolean} = {
member : ['kim', 'park'],
day : 30,
started : true
}
function 함수(x :number) :number{ // 파라미터 num, return num
return x * 2;
}
// 파라미터? < 옵션. x? == x :number|undefined
function 함수(x? :number) :void{ // 파라미터 타입지정하면 필수로 써야함
1 + 1
}
type Member = [ number, boolean ]; // arry tuple 타입
let john:Member = [123, true];
type Membership = {
[key :string] : string // 글자로 된 모든 obj 속성 타입은 string
}
let person :Membership = { name : 'park' }
class User {
name :string;
constructor(name :string){
this.name = name;
}
}
: 세미콜론으로 변수만들 때 타입을 지정해주면 된다.
배열, 객체, 클래스, 함수 등등 잘 살펴보자.
'Html_css_js' 카테고리의 다른 글
TS - type alias와 readonly (0) | 2023.01.05 |
---|---|
TS - type narrowing, assertion 으로 범위 지정해주기 (0) | 2023.01.03 |
JS - new Map(), new Set() 사용하기 (0) | 2022.12.29 |
JS - ES6문법 반복문 for ...in, for ...of (0) | 2022.12.28 |
JS - 비동기적 처리 Promise와 Promise chain 그리고 async/await (0) | 2022.12.28 |
Comments