当前位置:网站首页>LayaBox---TypeScript---举例
LayaBox---TypeScript---举例
2022-08-04 21:00:00 【格拉格拉】
目录
1.介绍
这些例子按复杂度递增的顺序:
- 全局变量
- 全局函数
- 带属性的对象
- 函数重载
- 可重用类型(接口)
- 可重用类型(类型别名)
- 组织类型
- 类
2.例子
2.1 全局变量
全局变量
foo包含了存在组件总数。
console.log("Half the number of widgets is " + (foo / 2)); 声明:使用declare var声明变量。
如果变量是只读的,那么可以使用 declare const。 你还可以使用 declare let如果变量拥有块级作用域。
/** 组件总数 */
declare var foo: number;2.2 全局函数
用一个字符串参数调用
greet函数向用户显示一条欢迎信息。
greet("hello, world");声明: 使用declare function声明函数。
declare function greet(greeting: string): void;2.3 带属性的对象
全局变量
myLib包含一个makeGreeting函数, 还有一个属性numberOfGreetings指示目前为止欢迎数量。
let result = myLib.makeGreeting("hello, world");
console.log("The computed greeting is:" + result);
let count = myLib.numberOfGreetings; 声明:使用declare namespace描述用点表示法访问的类型或值。
declare namespace myLib {
function makeGreeting(s: string): string;
let numberOfGreetings: number;
}2.4. 函数重载
getWidget函数接收一个数字,返回一个组件,或接收一个字符串并返回一个组件数组。
let x: Widget = getWidget(43);
let arr: Widget[] = getWidget("all of them");声明:
declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];2.5 可重用类型(接口)
当指定一个欢迎词时,你必须传入一个
GreetingSettings对象。 这个对象具有以下几个属性:1- greeting:必需的字符串
2- duration: 可靠的时长(毫秒表示)
3- color: 可选字符串,比如‘#ff00ff’
greet({
greeting: "hello world",
duration: 4000
});声明: 使用interface定义一个带有属性的类型。
interface GreetingSettings {
greeting: string;
duration?: number;
color?: string;
}
declare function greet(setting: GreetingSettings): void;2.6 可重用类型(类型别名)
在任何需要欢迎词的地方,你可以提供一个
string,一个返回string的函数或一个Greeter实例。
function getGreeting() {
return "howdy";
}
class MyGreeter extends Greeter { }
greet("hello");
greet(getGreeting);
greet(new MyGreeter());声明:可以使用类型别名来定义类型的短名:
type GreetingLike = string | (() => string) | MyGreeter;
declare function greet(g: GreetingLike): void;2.7 组织类型
greeter对象能够记录到文件或显示一个警告。 你可以为.log(...)提供LogOptions和为.alert(...)提供选项。
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });声明: 使用命名空间组织类型。
declare namespace GreetingLib {
interface LogOptions {
verbose?: boolean;
}
interface AlertOptions {
modal: boolean;
title?: string;
color?: string;
}
}你也可以在一个声明中创建嵌套的命名空间:
declare namespace GreetingLib.Options {
// Refer to via GreetingLib.Options.Log
interface Log {
verbose?: boolean;
}
interface Alert {
modal: boolean;
title?: string;
color?: string;
}
}2.8 类
你可以通过实例化
Greeter对象来创建欢迎词,或者继承Greeter对象来自定义欢迎词。
const myGreeter = new Greeter("hello, world");
myGreeter.greeting = "howdy";
myGreeter.showGreeting();
class SpecialGreeter extends Greeter {
constructor() {
super("Very special greetings");
}
}声明: 使用declare class描述一个类或像类一样的对象。 类可以有属性和方法,就和构造函数一样。
declare class Greeter {
constructor(greeting: string);
greeting: string;
showGreeting(): void;
}边栏推荐
猜你喜欢

Web3安全风险令人生畏,应该如何应对?

Five Minutes Introductory Text Processing Three Musketeers grep awk sed

After the tester with 10 years of service "naked resignation" from the big factory...

c语言小项目(三子棋游戏实现)

如何进行AI业务诊断,快速识别降本提效增长点?

mdk5.14 cannot be burned

Feign 与 OpenFeign

Interviewer: How is the expired key in Redis deleted?

如何最简单、通俗地理解爬虫的Scrapy框架?

Qt Designer生成的图形可以自适应窗口的大小变化
随机推荐
uwp ScrollViewer content out of panel when set the long width
机器学习_02
vim clear last search highlighting
Big capital has begun to flee the crypto space?
Uniapp微信雪糕刺客单页小程序源码
Zero-knowledge proof - zkSNARK proof system
SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版
腾讯云胡启明:Kubernetes云上资源的分析与优化
2、字符集-编码-解码
visual studio 2015 warning MSB3246
[Academic related] Tsinghua professor persuaded to quit his Ph.D.:I have seen too many doctoral students have mental breakdowns, mental imbalances, physical collapses, and nothing!...
【2022牛客多校5 A题 Don‘t Starve】DP
【Programming Ideas】
node 的运行命令
Desthiobiotin-PEG4-Azide_脱硫生物素-叠氮化物 100mg
使用堡塔应用管理器配置laravel队列方法
88. (the home of cesium) cesium polymerization figure
bracket matching
使用百度EasyDL实现森林火灾预警识别
多商户商城系统功能拆解22讲-平台端分销商品