1、为什么越来越多的企业选择使用TypeScript ?
2、TypeScript 中的原始类型有哪些 ?
3、说说数组在 TypeScript 中是如何工作的 ?
4、什么是 any 类型,何时使用 ?
5、什么是void,什么时候使用void类型 ?
6、TypeScript 中声明变量有哪些不同的关键字?
7、如何书写带有类型注释的函数 ?
8、如何在 TypeScript 中创建对象 ?
9、如何在 TypeScript 中指定可选属性 ?
10、说说枚举在 TypeScript 中是如何工作的 ?
11、什么是参数解构 ?
12、说说TypeScript 中 for 循环的不同变体
13、TypeScript 中控制成员可见性有几种方法 ?
14、TypeScript 支持静态类吗 ?为什么 ?
1、为什么越来越多的企业选择使用TypeScript ?
随着 JavaScript 项目规模的扩大,它们变得难以维护
,这有几个原因。
首先,JavaScript 从未设计用于构建大型应用程序,它最初的目的是为网页提供小型脚本功能
。
直到现在,它还没有提供用于构建大型项目的工具和结构,例如类、模块和接口。此外,JavaScript 是动态类型
的。它不支持诸如 IntelliSense 之类的功能
。
TypeScript 文件使用.ts 扩展名
,而 JavaScript 文件使用.js 扩展名
由于 TypeScript 是 JavaScript 的超集,所有有效的JavaScript 代码都是有效的 TypeScript 代码,将 .js 文件重命名为 .ts 不会改变任何内容
TypeScript 添加了可选的静态类型和语言特性,例如类和模块
TypeScript 纯粹是一个编译时工具
,编译后,我们将得到简单、普通的 JavaScript,TypeScript 设计目标是为开发大型应用而生的
//注意参数和返回类型是如何用它们的类型注释的 function add(a:number,b:number):number{ const sum=a+b; return sum; } //以下代码是,是编辑器将上面编译后的结果 function add(a,b){ const sum=a+b; return sum; }
2、TypeScript 中的原始类型有哪些 ?
TypeScript 具有三种常用的基本类型:字符串、数字和布尔值,这些对应于 JavaScript 中类似命名的类型。
string:表示文本值,例如“javascript”、“typescript”等
number:表示数值,如 1、2、25、36 等
boolean:表示一个变量,它可以具有“真”或“假”值
3、说说数组在 TypeScript 中是如何工作的 ?
我们使用数组来存储相同类型的值,数组是有序和索引的值集合
索引从 0 开始,即第一个元素的索引为 0,第二个元素的索引为 1,依此类推
//这个是在TypeScript中声明和初始化数组的语法 let values:number=[]; values[0]=10; values[1]=20; values[3]=30; //也可以用简写的语法创建数组 let values:number=[10,20,30,40]; //TypeScript提供了另外一种语法指定Array类型 let values:Array<number>=[10,20,30,40];
4、什么是 any 类型,何时使用 ?
有时你想将值存储在变量中,但事先不知道该变量的类型
当你没有明确提供类型
时,TypeScript假定变量是any类型,并且编译器无法从周围的上下文中推断出类型
例如,该值来自 API 调用或用户输入。any类型
允许你将任何类型的值分配给 any 类型的变量
let person:any="FOO"; const employeeData:string={"name":"xdy","age":"18"}; const employee:any=JSON.parse(employeeData); console.log(employeeData); console.log(employee);
5、什么是void,什么时候使用void类型 ?
void
表示变量没有类型
,它充当与任何相反的类型,它在不返回值的函数中特别有用
如果变量是 void 类型,则只能将 null 或 undefined 值
分配给该变量。
function notify():void{ alert("hello world") }
6、TypeScript 中声明变量有哪些不同的关键字?
var fo="bar"; let a=5; if(true){ let a=10 console.log(a) //10 } console.log(a) //5 const a=5; if(true){ a=10;//会报错,无法分配给a,因为它是常量 }
7、如何书写带有类型注释的函数 ?
函数是执行特定代码的代码块
函数可以有选择地接受一个或多个参数,处理它们,并有选择地返回一个值。
function gree(name:string):string{ return `hello ${name}` } let greeting=gree("xdm"); console.log(greeting);
8、如何在 TypeScript 中创建对象 ?
对象是类似字典的keys和values的集合
,key 必须是唯一
的。它们类似于数组,有时也称为关联数组
但是,数组使用数字来索引值,而对象允许使用任何其他类型作为键
let pt:{x:number,y:number}={ x=10; y=20; } console.log(pt);
9、如何在 TypeScript 中指定可选属性 ?
通过添加 ?
对象类型可以具有零个或多个可选属性,在属性名称之后
let pt:{x:number,y:number,z?:number}={ x=10; y=20; } console.log(pt);
10、说说枚举在 TypeScript 中是如何工作的 ?
枚举允许我们创建命名常量,这是一种为数字常量值赋予更友好名称的简单方法
枚举由关键字 enum 定义,后跟其名称和成员。
11、什么是参数解构 ?
参数解构,允许函数将作为参数提供的对象结构到一个或多个局部变量中
function multiply({a,b,c}:{a:number,b:number,c:number}){ console.log(a*b*c); } multiply({a:10,b:20,c:30}); type ABC={a:number,b:number,c:number};
function multiply({a,b,c}:ABC){ console.log(a*b*c) } multiply({a:10,b:20,c:30})
12、说说TypeScript 中 for 循环的不同变体
TypeScript 提供了以下三种循环集合的方法
let values=[10,"FOO",true]; for(var i=0; i<values.length;i++){ console.log(values[i])//10,"foo",true } let values=[10,"foo",true]; values.forEach(val=>{ console.log(val); //10,"foo",true }) let values=[10,"foo",true]; for(let val of values){ console.log(val)//10,"foo",true }
13、TypeScript 中控制成员可见性有几种方法 ?
TypeScript 提供了三个关键字来控制类成员的可见性
public
:您可以在 class 外的任何地方访问公共成员。默认情况下,所有类成员都是公共的。
protected
:受保护的成员仅对包含该成员的类的子类可见。不扩展容器类的外部代码无法访问受保护的成员。
private
:私有成员仅在类内部可见,没有外部代码可以访问类的私有成员。
14、TypeScript 支持静态类吗 ?为什么 ?
TypeScript 不支持静态类
,这与流行的 C# 和 Java 等面向对象的编程语言不同。
这些语言需要静态类,因为所有代码,即数据和函数,都需要在一个类中并且不能独立存在。静态类提供了一种方法来允许这些功能,而无需将它们与任何对象相关联。在 TypeScript 中,您可以将任何数据和函数创建为简单对象
,而无需创建包含类
。因此 TypeScript 不需要静态类
,单例类只是 TypeScript 中的一个简单对象。