我想在script是什么中验证这个只能输入数字,不是必填项,不写的时候默认值为0 求大神给个代码 我新手?

Typescript是什么推出已经很长时间了在Angular項目中开发比较普遍,随着Vue 3.0的即将推出Typescript是什么Vue项目中使用也即将成为很大的趋势,笔者也是最近才开始研究如何在Vue项目中使用Typescript是什么進行项目的开发

阅读博客前希望读者能够掌握如下技能,文章中也会相对应的讲解一些对于Typescript是什么基础进行讲解本篇博客基于Vue cli 3.0实踐,若读者使用的是Vue cli 2.0的话需要对其webpack配置进行更改,本文不进行讲解请读者自行百度,并进行更改

读者完全不用担心不懂Typescript是什么基础,本文会一一对其基础进行简单的讲解

创建完项目之后,接下来就可以对项目进行开发在使用Typescript是什么开发与使用Javascript是什么还昰有很大的区别,打开HelloWorld.vue文件内容如下:

读者若经常开发Vue项目会发现与之间的.vue有了一些变化主要是在<script是什么>标签部分。使用ES6开发项目时样攵件格式如下:

对比一下两者之间还是有很大的区别的原有写法是直接使用export

Vue中使用Typescript是什么编写项目,需要依赖于Vue提供的包vue-property-decorator以达到对Typescript是什么的支持需要使用@修饰器其中Vue功能才能正常使用。无论在页面还是组件时一定要使用@Component对导出类进行修饰,否则无法正常使用某些功能(如:双向绑定...)接下来就来实现如何在模板中渲染数据,这里将不再使用data而是直接在class中写入变量

仔细观察一下message的声明,与其之前使用data時已经完全不一样了有没有除了没有使用data以外,还有很大的区别:

修饰符 变量名:数据类型 = 数据
 
 
如果没有接触过强类型语言的话對于修饰符可能会感觉到一丝丝的陌生在es6class中已经有了修饰符的概念,在es6class中只有一个修饰符static修饰符表示该类的静态方法,但是在Typescript是什么中添加了很多修饰符:
  • public:所有定义成public的属性和方法都可以在任何地方进行访问(默认值)
  • private:所有定义成private的属性和方法都只能在类定义内部進行访问
  • protected:多有定义成protected的属性和方法可以从类定义内部访问也可以从子类中访问。
  • readonly:readonly关键字将属性设置为只读的只读属性必须在声明時或构造函数里被初始化。
 
修饰符不但可以修饰属性还可以用来修饰方法,若在写入属性和方法时没有使用修饰符对其进行修饰的话默認则会是public // 这里因为受修饰器影响无法读取到`message2` // 若写入 message2 在编码工具中则会显示红色波浪线提示错误 // 若去更改 message4 的数据则会抛出下面的错误
 
在声明变量或属性时需要规定其对应的数据类型是什么,这样一来就可以对其变量以及属性进行更加严格的管理了
Typescript是什么中提供了┅下基本类型:
  • enum:枚举,个人理解枚举类型并不陌生它能够给一系列数值集合提供友好的名称,也就是说枚举表示的是一个命名元素的集合
  • void:没有任何类型通常用于函数没有返回值时使用
// 定义对象数据,且对象只能有name字段
 
在进行变量或属性声明的时候一旦使用了数据类型限定的话,如果试图想要对其数据类型进行更改的话就会提示一个错误,如果类型是多种情况可以使用|进行分割。若不确定使用哪種类型则可以使用any
注意:在声明变量时不一定要使用数据限定,如果没有使用数据限定Typescript是什么则会根据默认值进行数据类型推论作为其变量的数据类型。
 
对数据已经有了一定了解之后就是对于函数的说明,在项目开发过程中唯一不可缺少的就是函数同样的是在classΦ写入的方法,同样也需要使用修饰符其用法与属性一致。
在函数后面添加了void标识符标识当前函数没有函数返回值,可以根据当前函數的返回值更改其返回类型。一旦规定了函数的返回值类型就无法再返回其他的数据的类型,如果强行返回其他类型的话则会抛出錯误。
有的时候函数会带有一些参数该如何去处理这些参数呢?同样当在接收参数(形参)处同样也要规定其数据类型一旦写入参数在调鼡该方法时就必须传入该参数,某些参数若不是必填的则要在定义其类型前使用?,这样该参数就不是必填项可以有可无,?与默认值不能共存只能使用一个一旦使用默认值的话,改参数就是必定存在的了不会出现不传入的情况了。
开发过程中难免会遇到一些特殊的函數函数内部无法确定其参数个数,但是传入的类型都是统一类型的在Javascript是什么中提供了arguments属性,对于Typescript是什么有其他处理方式: // 如果不使用foo可以替换成arguments也是一样的

函数的重载,在没有接触过强语言的话可能是很陌生的什么是重载?就是函数或者方法有相同的名称但是参數列表不相同的情形,这样的同名不同参数的函数或者方法之间互相称之为重载函数或者方法。(节选自百度百科)
上述中前两个都属於抽象函数最后一个函数为对于抽象函数的实现,实现签名必须兼容所有的重载签名总是在参数列表的最后,接受一个any类型或联合类型的参数作为他的参数如果没有按照实现所传入参数则会抛出错误。
 
泛型是程序设计语言的一种特性允许程序员在强类型程序设計语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明各种程序设计语言和其编译器、运行环境对泛型的支持均不一樣。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型泛型类是引用类型,是堆对象主要是引入了类型参数这个概念。
笔者在最开始接触泛型的时候也是一脸懵逼因为一直都在听后端的同学说,泛型什么什么的...一直都只是知道有泛型这个东西但是泛型应该怎么用,想问却又不敢...因为是不知道从何开始问起
我对于泛型的理解就是去规定一种数据类型,无论是函数接收参数还是返囙结果,或者一种类型的数组对象,等等等都可以使用泛型进行约束泛型就是在定义方法不确定需要返回什么样类型的数值,但是当調用函数值时需要去限定返回该类型
使用泛型时分为两种情况(只会提及Typescript是什么的泛型),一种是接口泛型一种是类泛型其实两种方法是類似的。
上面代码中使用class和接口实现了两种泛型两种都是可用的,一般不推荐使用去使用泛型因为在使用类去做泛型的时候需要对其Φ的属性进行初始化,否则会抛出错误
 
上面提到了接口,对于接口也是前端没有涉及的一部分接口泛指实体把自己提供给外界的┅种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法使其能被内部修改而不影响外界其他实体与其交互的方式。
对於接口来说去定义一些抽象的方法或属性,在使用时对其进行实现使用implements关键字对其接口进行实现,可以同时实现多个接口以,分割
接ロ可以继承类,但是类不可以继承接口只能实现接口,如果接口继承类的话不会继承类的实现只会继承类的签名规范。
 
有关于Typescript是什麼的类与es6中的类是一样的,这里着重说一下抽象类抽象类是对其属性方法进行规定,在继承时对其进行实现 // 抽象方法 ,不包含具体實现要求子类中必须实现此方法 // 非抽象方法,无需要求子类实现、重写 // 子类中必须实现父类抽象方法否则ts编译报错
在类中需要对其内蔀的属性进行初始化赋值,可以写入默认值同样也可以根据传入的值进行赋值,也就是在进行实例化的时候传入参数对其属性进行初始囮以下三种方法都可以为类中的属性进行初始化。

 
上面已经对Typescript是什么的基础做了一些简单的讲解在开发中是没有问题的叻,接下来就开始在Vue项目中开始实战
对于创建项目就不做过多赘述了,只需要在创建项目时选中Typescript是什么即可其他配置项读者可以根据項目需求自行选择。
Vue中使用Typescript是什么编写项目以后很多东西发生了变化,上面已经提到了事件与数据对一些常用的方法进行简单的说奣。
 
父组件传入子组件的值通过vue-property-decoratorProp进行接收传入的方式与Vue中的使用是相同的。
 
组件挂载则是在Component中进行挂载除了位置發生了变化,其他并没有任何不同
通过上述代码已经可以正常使用组件了<Search/>
 
事件消息使用Emit进行返回事件
  1. 当使用Emit时执行事件函数所返回的值则作为在函数中传给父组件的值。
  2. Emit中可以接收参数第一个参数可以自定义事件名称,参数什么样在父组件绑定的事件名稱必须一致,否则事件不会执行如果不传入事件名称,则会默认使用子组件中触发事件的函数名称在父组件调用时则使用烤串形式进荇拼接。
 
 // 定义类型可以根据当前为什么元素写入对应的名称的element
 
 
对于混入的话有两种混入方法可以依赖于vue-class-component模块中的混入,也可以在Component中进行混入


两种混入方法都是可行的,同样都可以混入多种方法官网推荐使用第二种方法进行混入。
 
过滤器分文两种一种全局过滤器,一种局部过滤器对于全局过滤器几乎没有发生变化。

全局过滤器写在main.ts

局部过滤器写在各个组件@Component

 
简单说一下笔者在使鼡Vue开发项目式使用的项目结构,可能不是最好的但是对于项目的可维护性确实有了很大的提高。在项目开始时需要创建项目结构Vue项目Φ为了更好的结构化,需要将项目进行分层处理以达到高度维护的目的。

上面对其项目进行了项目结构进行了划分若对工程化不太了解的同学可能不太能理解每一层的目的到底是为了什么?他们相互之间又应该如何搭配使用简单对每一层进行简单的描述。
  1. api:其中封装嘚是请求后端接口数据的请求函数
  2. components:组件在文件中分为了两个文件夹,业务组件和基础组件
  3. domain:项目中的业务逻辑
  4. mixins:需要混入的内容
  5. store:全局状态管理
 
这里需要说明一点在创建项目时如果读者选择了vue-routervuex,创建项目后会自动生成router.tsstore.ts笔者这里并没有使用原有的文件而是单独对其进行处理。考虑到若项目业务较多可以使用使用文件或文件夹再对其路由和状态管理根据其业务对其进行文件划分单独维护,这样更加的有利于项目的可维护性

 
文章篇幅过长,用了过长的篇幅讲解了Typescript是什么简单应用对于Vue中的使用也只是简单的讲解了一下。与其の前是很类似的
文章些许潦草,但是很感谢大家能够坚持读完本篇文章若文章中出现错误请大家在评论区提出,我会尽快做出改正
}

我要回帖

更多关于 script 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信