首页 > 编程语言 >JavaScript 的核心特性和TypeScript 的高级概念

JavaScript 的核心特性和TypeScript 的高级概念

时间:2025-01-02 10:29:47浏览次数:1  
标签:Code string JavaScript 特性 类型 TypeScript typescriptCopy name

JavaScript 核心特性

JavaScript 是一种动态的、弱类型的编程语言,广泛应用于 Web 开发中。它是 Web 页面上的脚本语言,也是 Node.js 生态系统的重要语言。JavaScript 的核心特性包括:

1. 动态类型

  • 弱类型语言:变量的类型在运行时确定,可以存储任何类型的数据,类型转换在运行时进行。比如: javascriptCopy Code
    let x = 10;      // 数字
    x = "hello";     // 字符串
    x = true;        // 布尔值

2. 闭包 (Closure)

  • 闭包 是指一个函数可以访问其外部作用域的变量。即使外部函数已经执行完毕,内部函数仍然可以访问这些变量。 javascriptCopy Code
    function outer() {
        let x = 10;
        return function inner() {
            console.log(x);
        };
    }
    const closureFn = outer();
    closureFn();  // 输出: 10

3. 原型继承 (Prototype Inheritance)

  • JavaScript 对象是通过原型链继承属性和方法的。每个对象都有一个 __proto__ 属性,指向它的原型对象。 javascriptCopy Code
    const animal = {
        speak: function() {
            console.log("Animal speaks");
        }
    };
    
    const dog = Object.create(animal);
    dog.speak();  // 输出: "Animal speaks"

4. 异步编程 (Asynchronous Programming)

  • JavaScript 的异步编程模型支持回调函数、Promise 和 async/await。这使得 JavaScript 能够处理长时间运行的任务(如 I/O 操作)而不会阻塞主线程。 javascriptCopy Code
    // 使用 Promise
    function fetchData() {
        return new Promise((resolve, reject) => {
            setTimeout(() => resolve("Data loaded"), 1000);
        });
    }
    
    fetchData().then(data => console.log(data));  // 输出: "Data loaded"
    
    // 使用 async/await
    async function getData() {
        const data = await fetchData();
        console.log(data);  // 输出: "Data loaded"
    }
    getData();

5. 事件循环 (Event Loop)

  • JavaScript 使用事件循环机制来处理异步代码。当执行堆栈为空时,事件循环会检查消息队列(即待处理的回调函数),并将其加入堆栈执行。

6. 模块化

  • 从 ES6 开始,JavaScript 提供了内置的模块系统,允许开发者将代码分割成多个模块进行导入和导出。 javascriptCopy Code
    // 导出模块
    export function greet() {
        console.log("Hello");
    }
    
    // 导入模块
    import { greet } from './greet.js';
    greet();  // 输出: "Hello"

7. 函数式编程 (Functional Programming)

  • JavaScript 支持函数式编程,包括高阶函数(接受函数作为参数或返回函数)、匿名函数、箭头函数、数组操作方法(如 mapfilterreduce)等。 javascriptCopy Code
    const numbers = [1, 2, 3, 4];
    const doubled = numbers.map(num => num * 2);
    console.log(doubled);  // 输出: [2, 4, 6, 8]

TypeScript 高级概念

TypeScript 是 JavaScript 的超集,增加了静态类型检查和高级编程特性。以下是一些 TypeScript 中的高级概念:

1. 类型声明 (Type Declaration)

  • TypeScript 允许开发者在代码中显式声明变量、函数参数、函数返回值等的类型,从而提高代码的可维护性和可靠性。

    typescriptCopy Code
    let name: string = "Alice";
    let age: number = 30;
    
    function greet(person: string): string {
        return `Hello, ${person}`;
    }
  • 联合类型 (union types):允许变量或参数接受多种类型。

    typescriptCopy Code
    let value: string | number = "Hello";
    value = 42;  // 也可以是数字
  • 类型别名 (type alias):通过 type 定义复杂类型。

    typescriptCopy Code
    type Point = { x: number, y: number };
    let p: Point = { x: 10, y: 20 };

2. 接口 (Interfaces)

  • 接口用于定义对象的结构,包括属性和方法。它帮助你描述对象的类型。

    typescriptCopy Code
    interface Person {
        name: string;
        age: number;
    }
    
    const person: Person = { name: "Alice", age: 30 };
  • 接口支持继承,可以扩展其他接口。

    typescriptCopy Code
    interface Employee extends Person {
        position: string;
    }

3. 泛型 (Generics)

  • 泛型使得函数、类、接口等能够在保持类型安全的同时支持多种类型。这是 TypeScript 提供的强大功能之一。

    typescriptCopy Code
    function identity<T>(arg: T): T {
        return arg;
    }
    
    let output = identity<string>("hello");
    let numberOutput = identity<number>(42);
  • 泛型约束:你可以对泛型类型进行约束,指定其必须符合某些条件。

    typescriptCopy Code
    function logLength<T extends { length: number }>(arg: T): number {
        return arg.length;
    }
    
    logLength("Hello");  // 输出: 5

4. 装饰器 (Decorators)

  • 装饰器是 TypeScript 中的实验性特性,允许你在类、方法、属性或参数上添加元数据。它们通常用于框架(如 Angular)中。

    typescriptCopy Code
    function log(target: any, key: string) {
        console.log(`${key} is accessed`);
    }
    
    class Person {
        @log
        name: string;
    
        constructor(name: string) {
            this.name = name;
        }
    }
    
    const p = new Person("Alice");
    console.log(p.name);  // 输出: "name is accessed" 和 "Alice"
  • 装饰器可以应用于类、方法、属性、参数等。

5. 映射类型 (Mapped Types)

  • 映射类型允许你根据现有类型生成新的类型。常见的映射类型包括 PartialReadonlyRecord 等。 typescriptCopy Code
    type Person = { name: string; age: number };
    type PartialPerson = { [P in keyof Person]?: Person[P] };  // 使所有属性变为可选

6. 条件类型 (Conditional Types)

  • 条件类型允许根据类型的条件选择不同的类型。 typescriptCopy Code
    type IsString<T> = T extends string ? "Yes" : "No";
    type Test1 = IsString<string>;  // "Yes"
    type Test2 = IsString<number>;  // "No"

7. 声明合并 (Declaration Merging)

  • TypeScript 允许通过多次声明同一接口或模块来合并它们。这在扩展库时非常有用。 typescriptCopy Code
    interface Window {
        width: number;
    }
    
    interface Window {
        height: number;
    }
    
    let myWindow: Window = { width: 100, height: 200 };

标签:Code,string,JavaScript,特性,类型,TypeScript,typescriptCopy,name
From: https://www.cnblogs.com/guangzhiruijie/p/18646980

相关文章

  • 只谈C++11新特性 - 显式转换函数
    显式转换函数背景与问题在C++11之前,explicit关键字只能用于构造函数。其作用是阻止构造函数在需要隐式转换时被调用。例如:示例问题(C++11之前的explicit用法)#include<iostream>classExample{public:explicitExample(intvalue){std::cout<<......
  • TypeScript 的类型
    在TypeScript中,类型用于定义变量、函数参数、返回值等的结构。以下是TypeScript中常见的类型及其相关概念:1. 基本类型(PrimitiveTypes)这些类型用于定义最基础的数据结构:number:数字类型,支持整数和浮点数。typescriptCopyCodeletage:number=30;letprice:nu......
  • Cocos Typescript与C#的选择
    Cocos选择TypeScript而非C#作为开发语言的决定,背后有多个可能的原因,主要涉及技术栈的适应性、社区需求、跨平台支持、开发效率等方面。以下是一些可能的原因:1. JavaScript/TypeScript与Web开发的紧密联系Cocos引擎自始至终都非常重视跨平台开发,尤其是对Web平台的支......
  • JavaScript学习记录6
    第一节算数运算符1.概述JavaScript共提供10个算术运算符,用来完成基本的算术运算。加法运算符x+y减法运算符 x-y乘法运算符 x*y除法运算符x/y指数运算符x**y余数运算符x%y自增运算符++x  、x++自减运算符--x  、x--数值运算符 +x负数值运算符-x......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript购物商城
    HTML+CSS+JS【购物商城】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript购物商城(篮球)
    HTML+CSS+JS【购物商城】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • JavaScript 中处理 100 万数据时确保性能和流畅度的几种方法
    以下是在JavaScript中处理100万数据时确保性能和流畅度的几种方法:1.使用WebWorkers思路:将数据处理任务转移到WebWorkers,它可以在后台线程中执行代码,避免阻塞主线程,从而保证页面的流畅性。代码示例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-......
  • JavaScript 基本语法
    一、JavaScript简介1.JavaScript的特点动态类型语言:变量的类型在运行时决定。面向对象:支持对象和原型继承。单线程、异步:基于事件循环的非阻塞模式。2.JavaScript的应用场景前端开发:控制DOM、实现交互(如React、Vue)。后端开发:通过Node.js构建服务器。混合开发:......
  • JDK 23 新特性解析
    1.前言JDK23是JavaSE平台版本23的参考实现,2024年9月17日正式发布。本文将详细解析JDK23的主要新特性。2.新特性总览JEP特性名称状态说明455模式中的原始类型、instanceof和switch预览扩展模式匹配,允许在所有模式上下文中使用原始类型,并在ins......
  • Vue 3 + TypeScript 从入门到进阶:快速上手指南
    Vue3+TypeScript从入门到进阶:快速上手指南Vue3是Vue.js的最新版本,而TypeScript是一种可以极大提升开发效率和代码质量的强类型语言。当Vue3与TypeScript结合使用时,可以带来更高效的开发体验。本文将重点介绍Vue3与TypeScript的结合使用方式,并提供详细的代码......