在Vue组件中如何使用 TypeScript的方法(详细教程)

typescript不仅可以约束我们的编码习惯,还能起到注释的作用,当我们看到一函数后我们立马就能知道这个函数的用法。这篇文章主要介绍了在vue组件中使用 typescript的方法,需要的朋友可以参考下

注意:此文并不是把vue改为全部替换为ts,而是可以在原来的项目中植入ts文件,目前只是实践阶段,向ts转化过程中的过渡。

ts有什么用?

类型检查、直接编译到原生js、引入新的语法糖

为什么用ts?

立即学习“前端免费学习笔记(深入)”;

TypeScript的设计目的应该是解决JavaScript的“痛点”:弱类型和没有命名空间,导致很难模块化,不适合开发大型程序。另外它还提供了一些语法糖来帮助大家更方便地实践面向对象的编程。

typescript不仅可以约束我们的编码习惯,还能起到注释的作用,当我们看到一函数后我们立马就能知道这个函数的用法,需要传什么值,返回值是什么类型一目了然,对大型项目的维护性有很大的提升。也不至于使开发者搬起石头砸自己的脚。

Angular: 我们为什么选择TypeScript?

TypeScript 里优秀的工具

TypeScript 是 JavaScript 的超集

TypeScript 使得抽象清晰可见

TypeScript 使代码更容易阅读和理解

是的,我知道这看起来并不直观。让我用一个例子来说明我的意思。让我们来看看这个函数jQuery.ajax()。我们能从它的签名中得到什么信息?

在Vue组件中如何使用 TypeScript的方法(详细教程) 

我们唯一能确定的是这个函数有两个参数。我们可以猜测这些类型。也许第一个是字符串,第二个是配置对象。但这只是猜测,我们可能错了。我们不知道什么选项进入设置对象(它们的名称和类型),或者该函数返回什么。

在不检查源代码或文档的情况下,我们不可能调用这个函数。检查源代码并不是一个好的选择——拥有函数和类的目的,是在不知道如何实现它们的情况下使用它们。换句话说,我们应该依赖于他们的接口,而不是他们的实现。我们可以检查文档,但这并不是最好的开发经验——它需要额外的时间,而且文档经常过期。

因此,尽管很容易阅读jQuery.ajax(url,settings),真正理解如何调用这个函数,我们需要阅读它的实现或它的文档。

以下是一个类型版本:

在Vue组件中如何使用 TypeScript的方法(详细教程) 

它给了我们更多的信息。

这个函数的第一个参数是一个字符串。

设置参数是可选的。我们可以看到所有可以传递到函数中的选项,不仅是它们的名称,还包括它们的类型。

函数返回一个JQueryXHR对象,我们可以看到它的属性和函数。

类型化签名肯定比未类型化的签名长,但是:string,:JQueryAjaxSettings和JQueryXHR并不是混乱的。 它们是提高代码的可理解性的重要文档。我们可以更深入地理解代码,而不必深入到实现或读取文档中。 我的个人经验是,我可以更快地阅读类型化代码,因为类型提供了更多的上下文来理解代码。

摘自 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文件下

在Vue组件中如何使用 TypeScript的方法(详细教程) 

现在就可以在我们原本的项目中使用ts文件了。

如何实践?

1、如何在js中引用ts文件?

由于js文件没有类型检测,当我们把ts文件引入的时候,ts文件会转化成js文件,所以在js文件中引用ts文件的方法类型检测机制不会生效。也就是说只有在ts文件内才会有类型检测机制。

那么怎么在js文件中使用类型检测机制呢?小编自己封装了一套typeCheck的decorator方法,仅供参考!用法如下:

@typeCheck('object','number') deleteItem(item,index) {}

登录后复制

检测deleteItem方法参数: item为object类型,index为number类型,如果类型不匹配将会抛出异常

部分代码献上:

const _check = function (checked,checker) {    check:      for(let i = 0; i 

ts的类型检测配合typeCheck基本上已经满足了我们的需要。

2、如何在ts中引用js文件?

由于js文件中没有类型检测,所以ts文件引入js文件时会转化为any类型,当然我们也可以在 .d.ts文件中声明类型。

如 global.d.ts 文件

在Vue组件中如何使用 TypeScript的方法(详细教程) 

当然有的时候我们需要使用一些库,然而并没有声明文件,那么我们在ts文件中引用的时候就会是undefined。这个时候我们应该怎么做?

比如我想要在util.ts文件中用 ‘query-string'的时候我们就会这样引用:

import querystring from 'query-string';

登录后复制

然而当你打印querystring 的时候是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,还有很多需要改进的地方,如果有更好的建议和意见可以联系我!

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

JS实现将链接生成二维码并转为图片的方法

JS实现将链接生成二维码并转为图片的方法

JS实现将链接生成二维码并转为图片的方法

以上就是在Vue组件中如何使用 TypeScript的方法(详细教程)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750396.html

(0)
上一篇 2025年3月8日 05:35:23
下一篇 2025年3月8日 05:35:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎样在vue中使用ts(详细教程)

    本篇文章主要介绍了如何在vue中使用ts的示例代码,现在分享给大家,也给大家做个参考。 本文介绍了如何在vue中使用ts的示例代码,分享给大家,具体如下: 注意:此文并不是把vue改为全部替换为ts,而是可以在原来的项目中植入ts文件,目前…

    2025年3月8日 编程技术
    200
  • JS数组sort方法如何使用

    这次给大家带来JS数组sort方法如何使用,JS数组sort方法使用的注意事项有哪些,下面就是实战案例,一起来看一下。 算法课上,我们会接触很多种排序算法,什么冒泡排序、选择排序、快速排序、堆排序等等。那么javascript的sort方法…

    编程技术 2025年3月8日
    200
  • js 数组操作与解析方法汇总

    这次给大家带来js 数组操作与解析方法汇总,js数组操作与解析的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候…

    编程技术 2025年3月8日
    200
  • 为什么web开发中需要避免使用全局变量

    这次给大家带来为什么web开发中需要避免使用全局变量,web开发中避免使用全局变量的注意事项有哪些,下面就是实战案例,一起来看一下。 全局变量带来的问题主要是:随着代码量的增长,过多的全局变量会导致代码难以维护,并且容易出bug。一两个全局…

    编程技术 2025年3月8日
    200
  • 关于JS抛出错误使用汇总

    这次给大家带来关于js抛出错误使用汇总,js抛出错误的注意事项有哪些,下面就是实战案例,一起来看一下。 在JS中抛出错误是一门艺术。摸清楚代码中哪里合适抛出错误是需要时间的。因此,一旦搞清楚了这一点,调试代码的事件将大大缩短,对代码的满意度…

    编程技术 2025年3月8日
    200
  • JS的try-catch语句与错误类型使用

    这次给大家带来js的try-catch语句与错误类型使用,js的try-catch语句与错误类型使用注意事项有哪些,下面就是实战案例,一起来看一下。 应用程序逻辑总是知道调用某个特定函数的原因,因此也是最合适处理错误的。千万不要将try-c…

    编程技术 2025年3月8日
    200
  • JS对象的使用原则

    这次给大家带来js对象的使用原则,js对象使用的注意事项有哪些,下面就是实战案例,一起来看一下。 JS独一无二之处在于任何东西都不是神圣不可侵犯的。默认情况下,你可以修改任何你可以触及的对象。它(解析器)根本就不在乎这些对象是开发者定义的还…

    编程技术 2025年3月8日
    200
  • 维护JS代码的三种方法

    这次给大家带来维护JS代码的三种方法,维护JS代码的注意事项有哪些,下面就是实战案例,一起来看一下。 维护。在其他语言中,考虑将已存在的对象作为库用来完成开发任务。在JS中,我们可以将已存在的对象视为一种背景,在这之上可以做任何事情。你应该…

    编程技术 2025年3月8日
    200
  • JS中Polyfill注解与阻止修改的使用

    这次给大家带来js中polyfill注解与阻止修改的使用,js中polyfill注解与阻止修改使用的注意事项有哪些,下面就是实战案例,一起来看一下。 随着ES5和和HTML5的特性逐渐被各种浏览器实现。JS polyfills(也称为shi…

    编程技术 2025年3月8日
    200
  • 如何访问JS的对象属性与方法

    这次给大家带来如何访问JS的对象属性与方法,访问JS对象属性与方法的注意事项有哪些,下面就是实战案例,一起来看一下。 定义一个对象,然后用点运算符(.)来访问属性和方法。今天突然看见还有另外一种方法中括号运算符([]),就认真看了下。 va…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论