TypeScript:实践入门和tsconfig.json配置文件

简介: TypeScript:实践入门和tsconfig.json配置文件

TypeScript相比JavaScript,可以很好的享受类型标注带来的代码提示,可以在编码阶段就解决大部分语法错误,极大的提升代码阅读体验和编码体验

目录

安装TypeScript

$ node -v
v16.14.0
# 安装
$ pnpm install typescript
# 查看版本
$ npx tsc --version
Version 4.9.5

使用tsconfig.json

# 初始化 tsconfig.json 文件
$ npx tsc --init

自动生成的配置文件

tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs", 
    "esModuleInterop": true, 
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  }
}

修改如下

{
  "compilerOptions": {
    "target": "ES5",
    "module": "ES6", 
    "outDir": "./dist",
    "removeComments": true,
    "esModuleInterop": true, 
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  },
  "include": ["src/**/*.ts"]
}

我们指定了输出目录,并且移除注释

TypeScript使用示例

项目结构

$ tree
.
├── package.json
├── src
│   ├── foo.ts
│   ├── index.ts
│   └── user.ts
└── tsconfig.json

package.json

{
  "type": "module",
  "dependencies": {
    "typescript": "^4.9.5"
  }
}

foo.ts

import { User } from "./user";
/**
 * 类型标注示例:打印字符串
 * @param name
 */
export function echo(name: string) {
  console.log(name);
}
/**
 * 泛型示例:原样返回
 * @param a
 * @returns
 */
export function func<T>(a: T): T {
  return a;
}
/**
 * 打印User对象
 * @param user 
 */
export function echoUser(user: User) {
  console.log({
    id: user.id,
    age: user.age,
    name: user.name,
  });
}

user.ts

import { User } from "./user";
/**
 * 类型标注示例:打印字符串
 * @param name
 */
export function echo(name: string) {
  console.log(name);
}
/**
 * 泛型示例:原样返回
 * @param a
 * @returns
 */
export function func<T>(a: T): T {
  return a;
}
/**
 * 打印User对象
 * @param user 
 */
export function echoUser(user: User) {
  console.log({
    id: user.id,
    age: user.age,
    name: user.name,
  });
}

index.ts

export interface User {
  id: number;
  name: string;
  age: number;
}

编译执行

# 执行
$ $ npx tsc
# 查看输出的文件
$ ls ./dist
foo.js   index.js    user.js
# 执行
$ node ./dist/index.js 
Hello World!

输出的文件

user.js

export {};

foo.js

export function echo(name) {
    console.log(name);
}
export function func(a) {
    return a;
}
export function echoUser(user) {
    console.log({
        id: user.id,
        age: user.age,
        name: user.name,
    });
}

index.js

import { echo, func, echoUser } from "./foo.js";
var msg = "Hello World!";
(function () {
    echo(msg);
    func("a");
    var user = {
        id: 1,
        name: "Tom",
        age: 20,
    };
    echoUser(user);
})();

使用webpack

项目结构

$ tree
.
├── package-lock.json
├── package.json
├── pnpm-lock.yaml
├── src
│   ├── foo.ts
│   ├── index.ts
│   └── user.ts
├── tsconfig.json
└── webpack.config.cjs

package.json

{
  "type": "module",
  "dependencies": {
    "ts-loader": "^9.4.2",
    "typescript": "^4.9.5",
    "webpack": "^5.75.0",
    "webpack-cli": "^5.0.1"
  }
}

webpack.config.cjs

"use strict";
const path = require("path");
module.exports = {
  mode: "development",
  entry: "./src/index.ts",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "dist"),
  },
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: "ts-loader",
        exclude: /node_modules/,
      },
    ],
  },
  resolve: {
    extensions: [".tsx", ".ts", ".js"],
  },
};
# 编译
$ npx webpack
$ node ./dist/bundle.js 
Hello World!
{ id: 1, age: 20, name: 'Tom' }

参考文档


相关文章
|
2月前
|
JavaScript 前端开发 编译器
10min代码快速熟悉Tsconfig.json配置文件
【8月更文挑战第16天】10min代码快速熟悉Tsconfig.json配置文件
47 2
|
5月前
|
监控 JavaScript 安全
TypeScript在员工上网行为监控中的类型安全实践
本文演示了如何使用TypeScript在员工上网行为监控系统中实现类型安全。通过定义`Website`类型和`MonitoringData`接口,确保数据准确性和可靠性。示例展示了从监控设备获取数据和提交到网站的函数,强调了类型定义在防止错误、提升代码可维护性方面的作用。
127 7
|
5月前
|
数据采集 Web App开发 JavaScript
TypeScript 爬虫实践:选择最适合你的爬虫工具
TypeScript 爬虫实践:选择最适合你的爬虫工具
|
9天前
|
JavaScript 前端开发 编译器
TypeScript,从0到入门带你进入类型的世界
该文章提供了TypeScript的入门指南,从安装配置到基础语法,再到高级特性如泛型、接口等的使用,帮助初学者快速掌握TypeScript的基本用法。
|
2月前
|
JSON 数据格式
langchain 入门指南 - JSON 形式输出大模型的响应
langchain 入门指南 - JSON 形式输出大模型的响应
77 0
|
3月前
|
JavaScript 开发者 索引
TypeScript接口与类型别名:深入解析与应用实践
【7月更文挑战第10天】TypeScript的接口和类型别名是定义类型的关键工具。接口描述对象结构,用于类、对象和函数参数的形状约束,支持可选、只读属性及继承。类型别名则为复杂类型提供新名称,便于重用和简化。接口适合面向对象场景,类型别名在类型重用和复杂类型简化时更有优势。选择时要考虑场景和灵活性。
|
4月前
|
JavaScript 前端开发 程序员
typescript入门笔记分享
typescript入门笔记分享
24 0
|
4月前
|
JavaScript
TypeScript编译(tsconfig.json配置)
TypeScript编译(tsconfig.json配置)
|
5月前
|
XML JSON 前端开发
Ajax – JSON入门指南
Ajax – JSON入门指南
39 1
|
4月前
|
JavaScript 编译器 IDE
36.【TypeScript 教程】tsconfig.json 配置
36.【TypeScript 教程】tsconfig.json 配置
23 0

热门文章

最新文章

下一篇
无影云桌面