ts+vue3系统学习笔记day01(二)

简介: 类型注解是指我们在使用类型时可以放置在任何位置的注解。在TypeScript中,使用类型注解并非强制性要求。它有助于编译器检查变量的类型,并避免处理数据类型时出现错误。

五.ts的类型注解.

 类型注解是指我们在使用类型时可以放置在任何位置的注解。在TypeScript中,使用类型注解并非强制性要求。它有助于编译器检查变量的类型,并避免处理数据类型时出现错误。


1.列子


ts文件

(()=>{
    // 规定str形参是一个string类型
    function sayHi(str:string) {
        return str + '你好呀!';
    };
    // let text = "张杰小朋友";
    let text =[10,20];
    console.log(sayHi(text));
})()


编译时报错:Argument of type 'number[]' is not assignable to parameter of type 'string'.意思就是这个number[]不能作为函数的实参


js文件

(() => {
    // 规定str形参是一个string类型
    function sayHi(str) {
        return str + '你好呀!';
    }
    ;
    // let text = "张杰小朋友";
    let text = [10, 20];
    console.log(sayHi(text));
})();


为什么还能正常编译成js呢,因为js是弱类型语言,js=ts:any.

浏览器还能正常输出,但是在真正开发中它还是个bug , 这也形成了ts比js更严谨,开发过程中可以在控制在直接看到错误,一般ts类型错了直接会提示。


六.ts的接口

接口简单的可以理解为类型注解的集合,他可以同时定义几个变量的类型


代码演示

(() => {
    // 定义一个接口
    interface Iperson{
        firstname : String,
        lastname : String,
        age:Number
    }
    function show(person:Iperson){
        return  person.firstname+""+person.lastname+""+person.age;
    }
    // 定义一个对象
    const person ={
        firstname:"zhang",
        lastname:"jie",
        age:18
    }
    console.log(show(person));
})();


七.ts的类

ts的类其实和js基本完全一样,看一下代码就懂了


ts文件

(() => {
    // 定义一个接口
    interface IPerson{
        firstname : String,
        lastname : String,
    }
    // 定义一个类型
    class Person {
        // 定义公共的字段(属性)
        firstname: String
        lastname:String
        fullname:String
        // 定义一个构造器函数
        constructor(firstname:String,lastname:String){
            this.firstname = firstname;
            this.lastname = lastname;
            this.fullname = this.firstname + "" + this.lastname;
        }
    }
    // 定义一个函数
    function show(person:IPerson){
        return person.firstname + "" +person.lastname
    }
    // 实例化对象
    const person = new Person('诸葛',"村妇");
    console.log(show(person));
})();


编译后的js文件

(() => {
    // 定义一个类型
    class Person {
        // 定义一个构造器函数
        constructor(firstname, lastname) {
            this.firstname = firstname;
            this.lastname = lastname;
            this.fullname = this.firstname + "" + this.lastname;
        }
    }
    // 定义一个函数
    function show(person) {
        return person.firstname + "" + person.lastname;
    }
    // 实例化对象
    const person = new Person('诸葛', "村妇");
    console.log(show(person));
})();


ts对类的定义只是一个语法糖,本质上还是js构造函数的实现。

相关文章
|
1天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
102 64
|
1天前
|
JavaScript 前端开发 API
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
|
26天前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
29天前
|
API
vue3知识点:provide 与 inject
vue3知识点:provide 与 inject
33 4
vue3知识点:provide 与 inject
|
29天前
|
API
vue3知识点:readonly 与 shallowReadonly
vue3知识点:readonly 与 shallowReadonly
25 1
vue3知识点:readonly 与 shallowReadonly
|
23天前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
50 7
|
24天前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
41 3
|
23天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
39 1
|
23天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
44 1
|
25天前
|
前端开发 JavaScript
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
下一篇
无影云桌面