TypeScript 基础 — string 和 String 的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript 基础 — string 和 String 的区别相关的知识,希望对你有一定的参考价值。
参考技术A string 和 String 是有效的 TypeScript 类型。以下声明有效:string 是指 javascript 的基本类型,可以使用文本(单引号或双引号)或 String 函数(不使用 new 关键字)创建。
以下三个声明创建相同的字符串:
我们经常使用 typeof variable==='string' 来检查给定变量是否为原始字符串。
另一方面, String 是一个基本包装字符串的对象,用于操纵字符串。我们可以从构造函数中创建 String 的实例,例如 new String(…) :
为了检查变量是否为 String 对象的实例,我们必须使用 instanceof 运算符:
将 String 对象分配给基本 string 变量:
在编写时, String 被声明为 interface ,以便将该 string 被视为 String 的子类型。因此,分配 foo = bar 不会导致任何问题。
但执行相反的赋值将抛出错误:
根据官方 TypeScript 的 注意事项 ,建议不要使用 Number 、 String 、 Boolean 、 Symbol 或 Object 。
typescript基础类型
布尔值
Boolean
let isDone:boolean=false;
数字
Number
let decLiteral:number=6;
let hexLiteral:number=0xf00d;
字符串
String
let name:string="bob";
name="smith";
模版字符串
template
let name:string=`Gene`;
let age:number=37;
let sentence:string=`Hello,my name is ${name}`;
与下面的类似
Similar to the following
let sentence:string="Hello,my name is"+name;
数组
Array
let list:number[]=[1,2,3];
数组范型
Array paradigm
let list:Array<number>=[1,2,3];
元组类型允许表示一个已知元素数量和类型的数组,各元素类型不必相同
Tuple types allow for an array of known elements with different numbers and types.
let x:[string,number];
x=['hello',10];//ok
x=[10,'hello'];//Error
当访问一个已知索引的元素,会得到正确的类型
When accessing an element of a known index, you get the correct type
console.log(x[0].substr(1));
console.log(x[1].substr(1));//number does not have substr
x[3]='word';//联合类型替代
console.log(x[5].toString())//string和number都有toString
x[6]=true//
枚举
enumeration
enum Color{Red,Green,Blue};
let c:Color=Color.Green;
改成从1开始编号
Change to Number from 1
enum Color{Red=1,Green,Blue};
let c:Color=Color.Green;
或者全部用来手动赋值
Or all for manual assignment
enum Color {Red=1,Green=2,Blue=4};
let c:Color=Color.Green;
enum Color {Red=1,Green,Blue};
let colorName:string=Color[2];
alert(colorName);
任意值
any
let motSure:any=4;
notSure="maybe a string instead";
notSure=false;//okay,definitely a boolean
let notSure:any=4;
notSure.ifitExists();
notSure.toFixed();
let prettySure:Object=4;
prettySure.toFixed();//Error
当你只知道一部分数据的类型时,any类型也是有用的
Any type is also useful when you only know a part of the data type.
let list:any[]=[1,true,"free"];
list[1]=100;
空值void类型像是与any类型相反,他表示没有任何类型,当一个函数没有返回值时,通常会见到其返回值类型是void;
The null void type is like the opposite of any type. It means that there is no type. When a function does not return a value,
it is usually seen that its return value type is void.
function warnUser():void{
alert('this is my warning message');
}
声明一个void类型的变量没有什么大用,只能赋予undefined和null
Declaring a variable of void type is not very useful, it can only give undefined and null
let unusable:void=undefined;
let u:undefined=undefined;
let n:null=null;
Never类型表示的是那些永不存在的值的类型.
Never types represent types of values that never exist.
function error(message:string):never{
throw new Error(message);
}
推断返回的值为never
Infer that the return value is never
function fail(){
return error("something failed");
}
返回never的函数必须存在无法达到的终点
A function returning to never must have an unreachable end point
function infiniteloop():never{
while(true){}
}
类型断言
Type Asserts
let someValue:any="this is a string";
let strLength:number=(<string>someValue).length;
另一个as语法
Another as grammar
let someValue:any="this is a string";
let strLength:number=(someValue as string).length;
Let Block-level scopes
by感觉官网并没有这个网站详细 https://www.w3cschool.cn/typescript/typescript-basic-types.html
by整理学习笔记 typescript
by我还差很远,要加油
以上是关于TypeScript 基础 — string 和 String 的区别的主要内容,如果未能解决你的问题,请参考以下文章