TS2

简介:
复制代码
//还要注意的是,在构造函数的参数上使用public等同于创建了同名的成员变量。
class Student {
    fullName: string;
    constructor(public firstName, public middleInitial, public lastName) {  //4个成员变量
        this.fullName = firstName + " " + middleInitial + " " + lastName;
    }
}
interface p{
    firstName:string;
    middleName:string;
    lastName:string;
    fullName:string;
}
function a(s:p){
    return "aa" + s.firstName + s.middleName + s.lastName + s.fullName;
}
var s = new Student('fff','mmm','lll');
console.log(a(s));

-------------------------------------------------------------------------------------------
元组类型:
var x: [string, number]  = ['hello', 10]; 
var x = ["sss",222];

var x : string|HTMLElement;

class Dog {woof(){}}
class Cat {meow(){}}
var pet: Dog|Cat;
-------------------------------------------------------
联合类型;
interface  p{
    name:string;
    age:string | string[] | ( ()=>string );
}
var p1 : p = {name:"sss",age:["sdss","dee"]};
console.log(p1.name + p1.age);
--------------------------------------------------------
联合类型|泛型
function cc<T>(x:T,y:T):T{  //申明时不指定参数类型
    return Math.random() > 0.5 ? x : y;
}
console.log( cc<string>('1','3') );  //调用的时候确定参数类型
console.log( cc<string|numnber>(1,'3') );

function ss<T,M>(x:T,y:M):T|M {
    return Math.random() > 0.5 ? x : y;
}
console.log( ss<string,number>("www",22) );
---------------------------------------------------------
模版字符串:
var name = "TypeScript";
var greeting  = `Hello, ${name}! Your name has ${name.length} characters`;
当编译目标为ES6之前的版本时,这个字符串被分解为:
var name = "TypeScript!";
var greeting = "Hello, " + name + "! Your name has " + name.length + " characters";
---------------------------------------------------------
类型别名:
type PrimitiveArray = Array<string|number|boolean>;
type MyNumber = number;
type NgScope = ng.IScope;
type Callback = () => void;
----------------------------------------------------------
const enum(完全嵌入的枚举)
const enum Suit { Clubs, Diamonds, Hearts, Spades }
var d = Suit.Diamonds;

Compiles to exactly:  var d = 1;
----------------------------------------------------------
解构声明会引入一个或多个命名变量, 并且初始化它们的值为对象的属性或者数组的元素对应的值.
比如说, 下面的例子声明了变量 x, y 和 z, 并且分别将它们的值初始化为 getSomeObject().x, getSomeObject().x 和 getSomeObject().z;
var { x, y, z } = getSomeObject();

交换2个值 
var x = 1;
var y = 2;
[x, y] = [y, x];
--------------------------------------------------------
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message);
}
----------------------------------------------------------
类型断言好比其它语言里的类型转换,
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
另一个为as语法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
----------------------------------------------------------------
函数参数也使用函数作用域。
解构:
数组的解构赋值:
let input = [1, 2];
let [first, second] = input;
console.log(first); // outputs 1
console.log(second); // outputs 2

// swap variables
[first, second] = [second, first];
---------------------------------------
function f([x,y]:[number,number]){
    console.log(x);
    console.log(y);
}
let i:[number,number] = [3,4];
f(i);
-----------------------------------------------------------------
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7217609.html,如需转载请自行联系原作者

相关文章
|
缓存 Java Android开发
构建高效的Android应用:内存优化策略解析
【5月更文挑战第25天】在移动开发领域,性能优化一直是一个不断探讨和精进的课题。特别是对于资源受限的Android设备来说,合理的内存管理直接关系到应用的流畅度和用户体验。本文深入分析了Android内存管理的机制,并提出了几种实用的内存优化技巧。通过代码示例和实践案例,我们旨在帮助开发者识别和解决内存瓶颈,从而提升应用性能。
|
SQL 存储 DataWorks
DataWorks产品使用合集之DataWorks中,配置DataHub数据源如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
393 5
接口签名:参数名按ASCII码从小到大排序+Key+MD5+转大写签名
接口签名:参数名按ASCII码从小到大排序+Key+MD5+转大写签名
452 1
WK
|
机器学习/深度学习 人工智能 自然语言处理
Python在人工智能领域有哪些应用
Python在人工智能领域应用广泛,凭借强大库和框架支持,成为了算法与模型实现的首选语言。主要应用于:1) 数据挖掘与机器学习,通过Scikit-learn、TensorFlow等库简化流程;2) 自然语言处理,利用NLTK、spaCy等工具进行文本分析及构建聊天机器人;3) 计算机视觉,借助OpenCV、PIL处理图像并结合深度学习框架提高性能;4) 深度学习,支持TensorFlow、PyTorch等构建复杂模型;5) 其他领域如推荐系统、智能语音助手等。Python以其简单易学、高效运行和强大的扩展性,在不断发展的AI技术中扮演着越来越重要的角色。
WK
787 0
|
存储 编译器 C语言
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(下)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
147 1
|
数据采集 存储 数据挖掘
Python DataFrame初学者指南:轻松上手构建数据表格
【5月更文挑战第19天】本文是针对初学者的Pandas DataFrame指南,介绍如何安装Pandas、创建DataFrame(从字典或CSV文件)、查看数据(`head()`, `info()`, `describe()`)、选择与操作数据(列、行、缺失值处理、数据类型转换、排序、分组聚合)以及保存DataFrame到CSV文件。通过学习这些基础,你将能轻松开始数据科学之旅。
|
开发工具 git
Git push大文件失败解决
Git push大文件失败解决
|
存储 SQL 机器学习/深度学习
OpenSearch大模型实践之Havenask篇
ChatGPT在通用任务上表现优秀,但无法解决众多垂直业务领域问题,这也不是ChatGPT模型本身的定位,而是需要通过其生态应用去解决。如何在垂直领域针对特定业务构建企业专属问答并且确保生成内容可控,是垂直领域面临的主要问题,也是从事行业搜索和问答的应用努力的方向。OpenSearch作为行业智能搜索产品,其使命就是去解决这一问题,我们正在做积极的探索。同时Havenask作为云产品OpenSearch和集团内引擎HA3的开源版本,也进行了尝试和探索。
OpenSearch大模型实践之Havenask篇
|
缓存 Ubuntu Unix
统信UOS系统开发笔记(七):在统信UOS系统上使用linuxdeployqt发布qt程序
在ubuntu上发布qt程序相对还好,使用脚本,但是在统信UOS麒麟上发布的时候,因为银河麒麟等不同版本,使用脚本就不太兼容,同时为了实现直接点击应用可以启动应用的效果,使用linuxdeployqt发布qt程序。
27409 7
|
存储 搜索推荐 分布式数据库
用户画像标签系统体系解释
用户画像标签系统体系解释
610 1