TypeScript入门与Tomcat的使用

82 阅读4分钟

TypeScript是一种静态类型,是需要先编译再进行执行。

静态类型

  • 可读性增强:基于语法解析WSDoc,ide增强
  • 可维护性增强:在编译阶段可以暴露大部分错误

=>多人合作的大型项目中,获得更好的稳定性和开发效率

JS的超集

  • 包含于兼容所有Js特性,支持共存
  • 支持渐进式引入与升级

基础语法

基础数据类型

语法格式 : const 变量名: 数据类型 = 值;
字符串 cosnt q: string = 'string';
数字	   const w: number = 1;
布尔值 const e: boolean = true;
null     const r: null  = null;
undefined const t: undefined = undefined; 

对象数据类型

对于对象类型的命名习惯性是在开头加上一个大写的 英文 I (IBytedancer)

interface IBytedancer{
  /* 只读属性:约束属性不可再对象初始化外赋值*/
  readonly jobId: number;
  
  name: string;
  sex: 'man' | 'woman' | 'other';
  age: number;
  
  /* 可选属性:定义该属性可以不存在  ?: */
  hobby?: string;
  
  /* 任意属性:约束所有对象属性都必须是该属性的子类型*/
  [key: string]: any;
}

const bytedancer: IBytedancer = {
  jobId: 1,
  name:'Lin',
  sex:'man',
  age: 28,
  hobby:'swimming',
}

/* 报错:无法分配到 "jobId" ,因为它是只读属性*/
bytedancer.jobId = 2;
/* 成功:任意属性标注下可以添加任意属性*/
bytedancer.plateform = 'data';
/* 报错:缺少属性 "name", hobby可缺省*/
const bytedancer2: IBytedancer = {
  jobId:1,
  sex:'woman',
  age:18,
}

函数类型

/* 无指定类型 */
function add(x,y){
  return x + y;
}
const mult = (x, y) => x * y;

/* 指定类型 */
function add(x: number, y: number):number{
  return x + y;
}
const mult:(x: number, y: number) => number = (x, y) => x * y;

interface IMult{
  (x: number, y: number): number;
}
const mult: IMult = (x, y) => x * y;

数组类型

/* 类型 + [] */
type IArr1 = number[];
const arr1: IArr1 = [1, 2, 3, 4];
/* 泛型表示 */
type IArr2 = Array<string | number | Record<string, number>>;
const arr2: IArr2 = ['1', 2, {a, 1}]; // 类型位置可以任意
/* 元祖表示 */
type IArr3 = [number, number, string, string];
const arr3: IArr3 = [1, 2, '3', '4'];
/* 接口表示 */
interface IArr4{
  [key: number]: any;
}										//表示number的子集什么都可以
const arr4: Iarr4 = ['string', () => null, {}, []];

TypeScript在JavaScript上的补充类型

/* 空类型,表示无赋值*/
type IEmptyFunction = () => void;
/* 任意类型,是所有类型的子类型*/
type IAnyType = any;
/* 枚举类型,支持枚举值到枚举名的正、反向映射*/
enum EnumExample{
  add = '+',
  mult = '*',
}
EnumExample['add'] === '+';
EnumExample['+'] === 'add';
enum EnumExample{Mon, Tue, Wed, Thu, Fri};
EnumExample['Mon'] === '1';
EnumExample['1'] === 'Mon';
/* 泛型 */
type INumArr = Array<number>;

TypeScript泛型

/* 不预先指定具体的类型,而在使用的时候在指定类型的一种特性 */
type IGetArr = <T>(Arr: T) => T[];
/* 泛型接口 & 多泛型 */
interface IX<T, U>{
  key: T;
  val: U;
}
/* 泛型类 */
class IMan<T>{
  instance: T;
}
/* 泛型别名 */ 
type ITyprArr<T> = Array<T>;

//泛型约束!!!
/* 约束泛型符合字符串(string或者stirng的子类型) */
//函数的命名格式
type IGetstringArr = <T extends string>(Arr: T) => T[];
/* 泛型默认的类型 */
//类型别名的命名格式
type IGetnumberArr<T = number> = (Arr: T) => T[];

字符串/数字 字面量

/* 允许指定字符串/数字的固定值 */
type IDomTag = 'html' | 'body' | 'div' | 'span';
type IOddNumber = 1 | 3 | 5 | 7 | 9;

app 本应用根目录

static 非必要目录,约定俗成的名字,一般在此处放静态资源( css js img);

WEB-INF必要目录,必须叫WEB-INF。受保护的资源目录,浏览器通过url不可以直接访问的目 录;

classes 必要目录, src下源代码、配置文件,编译后会在该目录下。 web项目中如果没有Java源码,则该目录不会出现。

lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现。

web.xml 必要文件, web项目的基本配置文件. ,较新的版本中可以没有该文件,但是学 习过程中还是需要该文件。

index.html 非必要文件, index.html/index.htm/index.jsp为默认的欢迎页;

IDEA关联本地Tomcat

IDEA中构建配置app的流程图

IDEA关联Tomcat

添加Tomcat 服务并注意:选择文件位置为 bin文件的上一层

用IDEA开发JavaWeb服务

1.对于项目添加Tomcat依赖

添加完Tomcat后

在自己所要进行的项目中双击 shift 查找 add,并选择添加框架支持

将Web应用服务添加Web应用程序款框架

删除.jsp文件(不再使用)

java代码放在src文件中。 html、css、js 放在web文件中。

注意3点

1.配置文件的文件夹 resoures 需要如图操作

2.导入的jar包必须要在WEB-INF下导入,并且文件夹必须为lib,

并对lib文件夹添加为库,选择添加为模块库(如果添加为项目库会范围过大)

用IDEA构建WEB项目

将可部署的APP部署到Tomcat中

先进行编辑配置 添加Tomcat 本地服务

进行部署文件

IDEA运行项目后