vue 에서 ts 의 예제 코드 를 어떻게 사용 합 니까?
주의:이 글 은 vue 를 모두 ts 로 바 꾸 는 것 이 아니 라 원래 의 프로젝트 에 ts 파일 을 삽입 할 수 있 습 니 다.현 재 는 실천 단계 일 뿐 ts 로 전환 하 는 과정 에서 의 과도 입 니 다.
ts 는 무슨 소 용이 있 습 니까?
유형 검사,원생 js 로 직접 컴 파일,새로운 문법 사탕 도입
왜 ts 를 써 요?
TypeScript 의 디자인 목적 은 JavaScript 의'통 증'을 해결 하 는 것 입 니 다.약 한 유형 과 네 임 스페이스 가 없어 모듈 화 하기 어렵 고 대형 프로그램 개발 에 적합 하지 않 습 니 다.또한 대상 을 대상 으로 하 는 프로 그래 밍 을 더욱 편리 하 게 실천 할 수 있 도록 문법 사탕 도 제공 했다.
type:script 은 우리 의 인 코딩 습관 을 제약 할 뿐만 아니 라 주석 역할 도 할 수 있 습 니 다.함수 하 나 를 본 후에 우 리 는 바로 이 함수 의 용법 을 알 수 있 습 니 다.어떤 값 을 전달 해 야 하 는 지,반환 값 이 어떤 유형 인지 한눈 에 알 수 있 고 대형 프로젝트 의 유지 성에 큰 향상 이 있 습 니 다.개발 자 들 이 돌 을 들 어 발 을 찧 을 정 도 는 아니다.
Angular:우 리 는 왜 TypeScript 를 선 택 했 습 니까?
TypeScript 에서 우수한 도구TypeScript 는 JavaScript 의 초 집합 입 니 다TypeScript 는 추상 적 이 고 선명 하 게 볼 수 있 습 니 다TypeScript 는 코드 를 쉽게 읽 고 이해 할 수 있 도록 합 니 다예,직관 적 으로 보이 지 않 는 다 는 것 을 알 고 있 습 니 다.나 로 하여 금 하나의 예 로 나의 뜻 을 설명 하 게 하 다.이 함수 jQuery.ajax()를 봅 시다.우 리 는 그것 의 서명 에서 어떤 정 보 를 얻 을 수 있 습 니까?
우리 가 유일 하 게 확정 할 수 있 는 것 은 이 함수 에 두 개의 인자 가 있다 는 것 이다.우 리 는 이런 유형 들 을 추측 할 수 있다.첫 번 째 는 문자열 일 수도 있 고,두 번 째 는 설정 대상 일 수도 있 습 니 다.그러나 이것 은 단지 추측 일 뿐,우리 가 틀 렸 을 수도 있다.우 리 는 설정 대상(그들의 이름과 유형)에 들 어가 거나 이 함수 가 무엇 을 되 돌려 주 는 지 모른다.
원본 코드 나 문 서 를 검사 하지 않 은 상태 에서 우 리 는 이 함 수 를 호출 할 수 없습니다.소스 코드 를 검사 하 는 것 은 좋 은 선택 이 아 닙 니 다.함수 와 클래스 를 가 진 목적 은 어떻게 실현 해 야 할 지 모 르 는 상황 에서 사용 하 는 것 입 니 다.다시 말 하면 우 리 는 그들의 실현 이 아니 라 그들의 인터페이스 에 의존 해 야 한다.우 리 는 문 서 를 검사 할 수 있 지만,이것 은 결코 가장 좋 은 개발 경험 이 아니다.그것 은 추가 시간 이 필요 하고,문서 가 자주 기한 이 지 났 다.
따라서 jQuery.ajax(url,settings)를 쉽게 읽 을 수 있 지만 이 함 수 를 어떻게 호출 하 는 지 진정 으로 이해 하려 면 이 함수 의 실현 이나 문 서 를 읽 어야 합 니 다.
다음은 하나의 유형 버 전 입 니 다.
그것 은 우리 에 게 더 많은 정 보 를 주 었 다.
이 함수 의 첫 번 째 매개 변 수 는 문자열 입 니 다4.567917.매개 변 수 를 설정 하 는 것 은 선택 할 수 있 습 니 다.함수 에 전달 할 수 있 는 모든 옵션 을 볼 수 있 습 니 다.이름 뿐만 아니 라 유형 도 포함 합 니 다
Angular:우 리 는 왜 TypeScript 를 선 택 했 습 니까?
ts 잘 배 워 요?
TypeScript 의 디자인 하 이 라 이 트 는 JavaScript 의 문법 을 버 리 지 않 고 JavaScript 의 초 집합(이 공 로 는 Anders 에 기록 해 야 합 니 다)을 만 들 었 다 는 것 입 니 다.이런 합 법 적 인 JavaScript 의 문 구 는 TypeScript 에서 모두 합 법 적 입 니 다.즉,학습 비용 이 매우 낮 습 니 다.만약 에 JavaScript 에 대해 깊이 알 고 있다 면.그러면 사실은 TypeScript 를 빨리 시작 할 수 있 습 니 다.왜냐하면 디자인 은 모두 JavaScript 의 사용 습관 과 관례 를 겨냥 한 것 이기 때 문 입 니 다.
몇 가지 간단 한 예 를 보면 바로 알 수 있다.
기본 유형
let isDone: boolean = false; //
let decLiteral: number = 6; //
let name: string = "bob"; //
let list: number[] = [1, 2, 3]; //
...
...
인터페이스
function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label);
} let myObj = { size: 10, label: "Size 10 Object" };
printLabel(myObj);
형식 검사 기 는 printLabel 호출 을 볼 수 있 습 니 다.printLabel 은 매개 변수 가 있 으 며,이 대상 매개 변 수 는 label 형식 이 string 이라는 속성 을 요구 합 니 다.주의해 야 할 것 은 우리 가 들 어 오 는 대상 매개 변 수 는 실제 적 으로 많은 속성 을 포함 하지만 컴 파일 러 는 필요 한 속성 이 존재 하 는 지,그리고 그 유형 이 일치 하 는 지 만 검사 합 니 다.물론 고급 용법 도 있 습 니 다.여 기 는 너무 많은 소 개 를 하지 않 고 더 많은 것 을 알 게 되 었 습 니 다.
어떻게 vue 프로젝트 에서 ts 를 응용 합 니까?
1.우선 ts 설치
npm install --save-dev typescript npm install --save-dev ts-loader
2.루트 디 렉 터 리 에 tsconfig.json 파일 만 들 기
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"lib": ["dom","es2016"],
"target": "es5"
},
"include": ["./src/**/*"] }
3.설정 에 ts-loader 추가
{
test: /\.tsx?$/,
loader: 'ts-loader', exclude: /node_modules/, options: {
appendTsSuffixTo: [/\.vue$/],
}
}
4.마지막 으로.ts 접 두 사 를 추가 하면 OK 입 니 다.webpack.base.conf.js 파일 에 있 습 니 다.이제 우리 의 원래 프로젝트 에서 ts 파일 을 사용 할 수 있 습 니 다.
어떻게 실천 합 니까?
1.어떻게 js 에서 ts 파일 을 인용 합 니까?
js 파일 에 형식 검사 가 없 기 때문에 ts 파일 을 도입 할 때 ts 파일 은 js 파일 로 바 뀌 기 때문에 js 파일 에서 ts 파일 을 참조 하 는 방법 형식 검사 체 제 는 유효 하지 않 습 니 다.즉,ts 파일 에 만 형식 검사 메커니즘 이 있 습 니 다.
그렇다면 어떻게 js 파일 에서 형식 검사 체 제 를 사용 합 니까?type:Check 의 decorator 방법 을 직접 봉 인 했 습 니 다.참고 하 시기 바 랍 니 다!용법 은 다음 과 같다.
@typeCheck('object','number') deleteItem(item,index) {}
delete Item 방법 파라미터 검출:item 은 object 형식 이 고 index 는 number 형식 입 니 다.형식 이 일치 하지 않 으 면 이상 을 던 집 니 다.부분 코드 제공:
const _check = function (checked,checker) {
check: for(let i = 0; i < checked.length; i++) { if(/(any)/ig.test(checker[i])) continue check; if(_isPlainObject(checked[i]) && /(object)/ig.test(checker[i])) continue check; if(_isRegExp(checked[i]) && /(regexp)/ig.test(checker[i])) continue check; if(Array.isArray(checked[i]) && /(array)/ig.test(checker[i])) continue check; let type = typeof checked[i]; let checkReg = new RegExp(type,'ig') if(!checkReg.test(checker[i])) { console.error(checked[i] + 'is not a ' + checker[i]); return false;
}
} return true;
} /**
* @description
* 1. , , ;
* 2. , string String ;
* 3. any , ;
* 4. , "number array", 。 ;
*/
export function typeCheck() { const checker = Array.prototype.slice.apply(arguments); return function (target, funcName, descriptor) { let oriFunc = descriptor.value;
descriptor.value = function () { let checked = Array.prototype.slice.apply(arguments); let result = undefined; if(_check(checked,checker) ){
result = oriFunc.call(this,...arguments);
} return result;
}
}
};
ts 의 유형 검 측 협조 type:Check 은 기본적으로 우리 의 수 요 를 만족 시 켰 다.2.어떻게 ts 에서 js 파일 을 인용 합 니까?
js 파일 에 형식 검사 가 없 기 때문에 ts 파일 이 js 파일 을 도입 할 때 any 형식 으로 전 환 됩 니 다.물론 저 희 는 d.ts 파일 에서 형식 을 설명 할 수 있 습 니 다.
예 를 들 어 global.d.ts 파일
물론 라 이브 러 리 를 사용 해 야 할 때 도 있 지만 파일 을 설명 하지 않 으 면 ts 파일 에서 인용 할 때 undefined 가 됩 니 다.이 럴 때 우 리 는 어떻게 해 야 합 니까?
예 를 들 어 내 가 util.ts 파일 에서'query-string'을 사용 하고 싶 을 때 우 리 는 이렇게 인용한다.
import querystring from 'query-string';
하지만 query string 을 인쇄 할 때 는 undefined 입 니 다.어떻게 해결 할 까요?소 편 방법 도 참고 하 시기 바 랍 니 다.새 module.js 파일
import querystring from 'query-string'; export const qs = querystring;
utile.ts 파일
import { qs } from './module.js';
해 결 됐 습 니 다.인쇄 qs 는 더 이상 undefined 가 아니 라 qs 라 이브 러 리 를 정상적으로 사용 할 수 있 습 니 다.이로써 본 고 는 ts 가 vue 에서 의 설정 소개 가 끝 났 습 니 다.이 글 은 개인 적 인 생각 만 대표 하고 프로젝트 의 확장 성 을 고려 하여 모두 ts 로 교체 되 지 않 았 습 니 다.다만 vue 에서 ts 를 도입 하려 고 시도 할 뿐 개선 해 야 할 부분 이 많 습 니 다.더 좋 은 건의 와 의견 이 있 으 면 저 에 게 연락 하 십시오!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.