什么是ts

TypeScript 是 JavaScript 的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。由于最终在浏览器中运行的仍然是 JavaScript,所以 TypeScript 并不依赖于浏览器的支持,也并不会带来兼容性问题。

TypeScript 是 JavaScript 的超集,这意味着他支持所有的 JavaScript 语法。并在此之上对 JavaScript 添加了一些扩展,如 class / interface / module 等。这样会大大提升代码的可阅读性。

声明函数

private formStatus: string = 'create';

@ 装饰器(替换钩子函数)

从vue-property-decorator引入相应的装饰器(Component, Prop, Watch…)

import { Component, Vue, Prop, Watch } from 'vue-property-decorator';

!: 表示强制解析, 告诉ts编辑器一定有值,即非空。

@Prop({ default: '测试' }) private title!: string;
<script lang="ts">
import { Component, Prop, Watch, Vue } from "vue-property-decorator";
import vHead from './header.vue';@Component({components: {vHead,},
})export default class Test extends Vue {@Prop({type: Object,required: false,default: {}}) formData !: object@Watch('formData', { immediate: true, deep: true })private onFormDatachanged(val: any){// console.log(val)this.currentId = val.id;this.formStatus = val.dialogStatus;}private formStatus: string = 'create';
};
</script>

检察权代码规范原理

Typescript是javascript的超集,所以ts在运行之前,得先编译成js,那么这个编译的过程,ts的编译引擎就得知道,文件里包括哪些方法,方法包含哪些参数,各参数的定义是什么,类型是什么,总之,所有源信息必须都知道,才能准确无误的把ts翻译成js。这些东西也正是我们需要的,通过这些信息,我们就可以对比规范和源信息,来确认是否是符合我们制定规范的代码。

强类型语言的优势在于静态类型检查,静态类型检查可以避免很多不必要的错误, 不用在调试的时候才发现问题.

Vue 引入 TypeScript

安装vue的官方插件
npm i vue-class-component vue-property-decorator --save// ts-loader typescript 必须安装,其他的相信你以后也会装上的
npm i ts-loader typescript tslint tslint-loader tslint-config-standard --save-dev

这些库大体的作用,可以按需引入:

vue-class-component:强化 Vue 组件,使用 TypeScript/装饰器 增强 Vue 组件
vue-property-decorator:在 vue-class-component 上增强更多的结合 Vue 特性的装饰器
ts-loader:TypeScript 为 Webpack 提供了 ts-loader,其实就是为了让webpack识别 .ts
.tsx文件 tslint-loader跟tslint:我想你也会在.ts .tsx文件 约束代码格式(作用等同于eslint)
tslint-config-standard:tslint 配置 standard风格的约束

添加 tsconfig.json

{// 编译选项"compilerOptions": {// 输出目录"outDir": "./output",// 是否包含可以用于 debug 的 sourceMap"sourceMap": true,// 以严格模式解析"strict": true,// 采用的模块系统"module": "esnext",// 如何处理模块"moduleResolution": "node",// 编译输出目标 ES 版本"target": "es5",// 允许从没有设置默认导出的模块中默认导入"allowSyntheticDefaultImports": true,// 将每个文件作为单独的模块"isolatedModules": false,// 启用装饰器"experimentalDecorators": true,// 启用设计类型元数据(用于反射)"emitDecoratorMetadata": true,// 在表达式和声明上有隐含的any类型时报错"noImplicitAny": false,// 不是函数的所有返回路径都有返回值时报错。"noImplicitReturns": true,// 从 tslib 导入外部帮助库: 比如__extends,__rest等"importHelpers": true,// 编译过程中打印文件名"listFiles": true,// 移除注释"removeComments": true,"suppressImplicitAnyIndexErrors": true,// 允许编译javascript文件"allowJs": true,// 解析非相对模块名的基准目录"baseUrl": "./",// 指定特殊模块的路径"paths": {"jquery": ["node_modules/jquery/dist/jquery"]},// 编译过程中需要引入的库文件的列表"lib": ["dom","es2015","es2015.promise"]}
}

类型断言

有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。

通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。 TypeScript会假设你,程序员,已经进行了必须的检查。

类型断言有两种形式。 其一是“尖括号”语法:

let someValue: any = "this is a string";let strLength: number = (<string>someValue).length;

另一个为as语法:

let someValue: any = "this is a string";let strLength: number = (someValue as string).length;

vue+ts的书写规范相关推荐

  1. 【前端】1.学习了一段时间的vue,总结一下Vue书写规范

    学习了一段时间的vue,总结一下Vue书写规范 命名规范 普通变量命名规范 常量命名规范 组件命名规范 method 方法命名命名规范 views 下的文件命名 props 命名规范 结构化规范 命名 ...

  2. CSS书写规范和顺序

    前言 对于项目,那就是我们的亲儿子啊,作为一个前端菜鸟,面向用户就是将自己的儿子介绍给别人认识,肯定要让他白白净净,漂漂亮亮的啦,给别人一眼就喜欢上的感觉咯,哈哈哈~ 常在河边走,哪有不湿鞋,在我们编 ...

  3. TypeScript的书写规范(TSLint)配置修改

    新版Angular中使用的Typescript书写规范非常恼人,比如默认会启用no-trailing-whitespace这样的选项.官方对此的说明是为了配合GIT的使用规范. 虽然这种规则在规范程序 ...

  4. Markdown文档书写规范

    MarkDown 文档书写规范 MarkDown 越来越成为方便快捷有效的文档书写格式.尤其对开发者来说. 主要有两个地方用到: 项目的 README.md 文件是每个项目都应该有的一个项目说明文档, ...

  5. Lua基本语法-书写规范以及自带常用函数

    Lua基本语法-书写规范和常用函数 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 String O ...

  6. css BEM书写规范

    [规范]css BEM书写规范 BEM是基于组件的web开发方法.其思想是将用户界面分隔为独立的块,从而使开发复杂的UI界面变得更简单和快,且不需要粘贴复制便可复用现有代码. BEM由Block.El ...

  7. CSS 样式书写规范

    可能不同团队都有各自的规范,又或者很多人在写 CSS 的时候还是想到什么就写什么,不存在太多的约束. 我觉得 CSS 代码规范还是有存在的必要的,尤其是在团队配合,多人协作下,规范就显得尤为重要. 本 ...

  8. 来自Mozilla的CSS书写规范建议

    一个来自Mozilla的CSS书写规范建议,希望对大家有帮助 引用内容 //显示属性 display list-style position float clear //自身属性 width heig ...

  9. 推荐大家使用的CSS书写规范、顺序

    推荐大家使用的CSS书写规范.顺序 CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, ...

最新文章

  1. 原始尺寸_螺母尺寸检测,螺丝螺母外观检测设备
  2. 浅谈.Net异步编程的前世今生----TPL篇
  3. 用于Spring JPA2后端的REST CXF
  4. 嵌入式C中,全局变量滥用的后果竟如此严重?
  5. java 语音匹配,java-语音识别,是否可以通过正则表达式确定用户所说的内容?
  6. plsql修改表名称_Excel教程:常见的工作表技巧(内有冻结拆分窗格)Excel神技巧...
  7. 【Java 网络编程】网络通信原理、TCP、UDP 回显服务
  8. python写一个服务_Python写一个服务
  9. ubuntu修改系统时区和jvm时区
  10. Ubuntu 19 ✖64安装GDAL
  11. 高性能可扩展mysql(电商数据库设计构思)
  12. caffe c++实战:通过训练好的模型对人脸图像进行特征提取(单张图像)
  13. 三网快速充值话费通道源码
  14. 谷歌插件EpubPress 将网页保存为电子书
  15. html 刷新表格数据,当我刷新页面时在html表格上重复数据
  16. ajax中怎样获取下拉列表,如何从Ajax/Jquery的下拉列表中获取复选框中的数据
  17. netcat常用命令
  18. java获取当前年月日历_java万年历,获取该年月日历表
  19. 会计基础(一):记账基础 - 复式记账法
  20. 万象物语找回服务器,万象物语角色没了怎么办 账号存档丢失怎么找回

热门文章

  1. 东大22春大学语文X《大学语文》在线平时作业1_100分资料非答案
  2. IOS-升级102 全局监听SendEvent
  3. H5满屏彩色泡泡小特效(适合表白哦~做完发给让你每天想念的人吧~)
  4. [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1
  5. mysql中计算最大回撤_基金最大回撤算例(Java 1.8)
  6. 如何打开阿里云安全组
  7. 内核下断链隐藏进程(兼容多版本Windows系统,非硬编码)
  8. arch Linux更新添加源,Arch Linux 更新源(以清华 arch 源为例)
  9. LOONGSON派二代 ReWorks系统固化
  10. 使用Nginx访问日志统计PV和UV