TypeScript学习笔记

一、TS简介

TypeScript,简称TS,是微软开发的开源编程语言。它是JavaScript的超集,意味着任何有效的JavaScript代码都是有效的TypeScript代码。TS就像是在JS的基础上加入了类、接口、泛型等面向对象的特性。而这些特性使得TS在开发大型项目时具有更好的可读性、可维护性、可扩展性。事实上,大型项目完全可以用TS来代替JS。目前,Angular就是基于TS开发的。

相较与JS,TS的学习成本略高,因为要掌握额外的面向对象特性以及类型的概念。但学会TS,会使得你的代码更加简洁、安全,并且提升团队的协作效率。所以推荐开发者学习TS。

二、TS的环境配置

要学习TS,首先需要搭建开发环境。

1. 安装Node.js

TS需要依赖Node.js环境,所以需要先下载并安装Node.js。可以在Node.js官网下载最新版本:https://nodejs.org/zh-cn/。下载完成后,执行以下命令,检查Node.js是否安装成功:

    
    node -v 
    

输出Node.js版本号即表示安装成功。

2. 安装TypeScript

执行以下命令,安装TS:

    
    npm install -g typescript 
    

全局安装TS后,通过以下命令查看版本是否安装成功:

    
    tsc -v
    

输出当前TypeScript版本信息即表示安装成功。

三、TS的基本语法和特性

以下是TS的基本语法和特性:

1. 类型推断

如果变量有初始化值,TypeScript通过变量的值自动推断变量的类型:

    
    let str = 'hello';  //自动识别变量类型为string
    let num = 666;      //自动识别变量类型为number
    let flag = true;    //自动识别变量类型为boolean
    

2. 显式声明

除了类型推断,还可以显式声明变量的类型:

    
    let str: string = 'hello';  //显式声明变量类型为string
    let num: number = 666;     //显式声明变量类型为number
    let flag: boolean = true;  //显式声明变量类型为boolean
    

3. 接口

TS中的接口定义了一个代码约定,使得不同的组件可以协同工作。接口就像是一个合同,定义了“必须”提供哪些属性或方法,以及对应的类型。如下面定义了一个Person接口:

    
    interface Person {
        name: string;
        age: number;
    }

    let person: Person = {
        name: 'Mark',
        age: 18
    };
    

这里定义了一个Person接口,约定了它包含了name和age两个属性,并且分别对应string和number类型。然后通过将这个接口作为类型注解来声明一个person对象,表示该对象必须包含name和age属性,并且属性值符合类型约定。否则,将会编译出错。

4. 类和继承

定义类的方式与JavaScript基本一致,只是可以使用extends关键字实现继承:

    
    class Animal {
        name: string;
        constructor(name: string) {
            this.name = name;
        }
        move(distance: number = 0) {
            console.log(`${this.name} moved ${distance}`);
        }
    }

    class Snake extends Animal {
        constructor(name: string) {
            super(name);
        }
        move(distance: number = 5) {
            console.log("Snake is sliding...");
            super.move(distance);
        }
    }

    let snake = new Snake("Python");
    snake.move();
    

这里定义了一个Animal类,包含了name和move方法。然后通过extends关键字实现了Snake类对Animal类的继承。Snake类重写了move方法,并且通过super.move()调用了父类的move方法。

5. 泛型

泛型提供了一种定义函数、类和接口的方式,使得它们能够适用于多种数据类型,从而实现代码重用。下面是一个泛型函数的示例:

    
    function identity(arg: T): T {
        return arg;
    }

    let output1 = identity("MyString");    //T指定为string类型
    let output2 = identity(666);           //T指定为number类型
    

函数名identity后面的<T>表示该函数使用泛型类型T。当调用该函数时,需要在函数名后面通过<T>来指定T的具体类型。

四、带有TS的React项目(示例代码)

以下是一个使用TypeScript的简单React项目示例:

1. 安装必要的库文件

    
    npm create react-app my-app --template typescript
    cd my-app
    npm start
    

2. App.tsx组件代码示例

    
    import React, {useState} from 'react';

    interface Props {
        name: string;
    }

    const App: React.FC = ({name}) => {
        const [count, setCount] = useState(0);

        const handleClick = () => {
            setCount(count + 1);
        };

        return (
            <div>
                <h1>Hello, {name}!</h1>
                <p>You clicked {count} times</p>
                <button onClick={handleClick}>Click me</button>
            </div>
        );
    };

    export default App;
    

这里定义了一个App React组件,组件的Props是一个name属性,表示需要传递一个名字参数。useState是React Hooks的一个方法,用于声明state变量和setter函数。这里的useState定义了一个number类型的count变量和与之对应的setCount方法。然后定义了一个handleClick函数,用于处理点击事件,使得count加1。最后返回了一个包含h1、p、button等React元素的div元素,并绑定了相关的事件处理。

3. index.tsx文件代码示例

    
    import React from 'react';
    import ReactDOM from 'react-dom';
    import App from './App';
    import './index.css';

    ReactDOM.render(
        <React.StrictMode>
            <App name="Alice"/>
        </React.StrictMode>,
        document.getElementById('root')
    );
    

这里的index.tsx文件是React项目的入口文件,通过ReactDOM.render()方法将App组件渲染到指定的HTML节点上(即id为root的div元素)。

五、总结

TS作为JavaScript的超集,对开发者来说是一个很好的选择。TS有更多的类型控制和面向对象特性,使得代码更具可读性、可维护性和可扩展性。上述示例演示了如何在React项目中使用TS,但事实上,TS还有更广泛的应用,如Node.js服务器端开发、Angular项目开发等。在实际项目中,应该根据需求进行深入学习和实践。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/192510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-01 10:28
下一篇 2024-12-01 10:28

相关推荐

  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • TypeScript declare详解

    一、declare语句的作用 1、文字阐述内容:TypeScript中的declare语句是用来定义变量、函数、类等外部代码块的类型。它告诉TypeScript编译器某个变量实际上…

    编程 2025-04-25
  • TypeScript中的foreach循环

    一、概述 JavaSript是一门灵活的语言,其中的数组也同样灵活多变。这就使得在一个数组上执行某些操作变得很方便。其中,forEach()就是用来遍历数组的。 在TypeScri…

    编程 2025-04-24
  • TypeScript InstanceType详解

    一、InstanceType是什么 在TypeScript中,InstanceType是一个泛型类型,它用于获取构造函数类型的实例类型。 示例代码: class SomeClass…

    编程 2025-04-23
  • 深入了解 TypeScript 断言

    TypeScript 作为一个基于 JavaScript 的超集,通过引入静态类型检查,为我们的代码带来了可预测性和更高的可维护性。而在很多情况下,由于我们对于某个变量或者表达式的…

    编程 2025-04-23
  • Kali-Linux学习笔记:如何切换root用户

    一、为什么需要切换root用户 在Linux下,root是系统的超级管理员账户,具有最高的权限。默认情况下,普通用户是无法执行一些系统性操作的,如修改系统配置文件等。所以,有时候我…

    编程 2025-04-18
  • uniappcheckbox学习笔记

    一、什么是uniappcheckbox uniappcheckbox是Uni-app框架中的一个组件,该组件用于在应用中显示一个复选框。复选框可以用于让用户选择一个或多个选项。 &…

    编程 2025-04-13
  • TypeScript面试题详解

    一、基础语法 TypeScript是JavaScript的超集,在语法上进行了扩展。基础语法是TypeScript入门的必备知识。以下是基础语法中常见的面试题。 1、变量声明 在T…

    编程 2025-04-12
  • 用TypeScript提高网页搜索可达性的技巧

    一、使用语义化HTML标签 搜索引擎通过分析HTML代码中的标签结构来了解页面的内容组织和层次关系,因此使用语义化HTML标签是提高搜索可达性的重要手段。在TypeScript开发…

    编程 2025-04-12
  • 深入理解 TypeScript 抽象类

    随着软件开发业务的复杂度和规模不断增加,代码的维护和管理变得越来越困难,编程语言也在不断演进以适应这个变化。TypeScript,作为 JavaScript 的超集,提供了一种强类…

    编程 2025-04-12

发表回复

登录后才能评论