..s

Posted xuyan1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了..s相关的知识,希望对你有一定的参考价值。

/** 为函数定义类型 */

// 为函数的参数指定类型,为函数的返回值指定类型
function add(x: number, y: number): number 
    return x + y;


let myAdd = function (x: number, y: number): number  return x + y; 

// 完整的函数
let myAdd2: (x: number, y: number) => number = function (x: number, y: number): number return x + y 

let myadd3: (x: number, y: number) => number = function (x: number, y: number)  return x + y 

let myadd4: (b: number, y: number) => number = function (x: number, y: number)  return x + y; 

let myadd5: (x:number, y: number) => number=function(x,y)return x+y

// 可选参数和默认参数:ts里传入一个函数的参数个数必须与函数期望的参数个数一致

function buildName(firstName: string, lastName: string) 
    return firstName + " " + lastName


let result = buildName("jsck", "bruce")
let result1 = buildName("jsck")
console.log(result1)

// 可选参数必须放在后面
function buildName2(firstName: string, lastName?: string) 
    return firstName + " " + lastName


let result2 = buildName2("jsck", "bruce")
let result3 = buildName2("jsck")
console.log(result2)
console.log(result3)

// 默认参数,当用户没有传值或者传递的值是undefined的时候生效
function buildName3(firstName: string, lastName="smith") 
    return firstName + " " + lastName


let result4= buildName3("bob", undefined)

// 剩余参数
function buildName4(firstName: string, ...restOfName: string[]) 
    return firstName + ‘,‘ + restOfName.join(",")


let employeeName = buildName4("xiaoju", "weimeng", "ruixin", "tengying")

console.log(employeeName)


/** 泛型 */
// 使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。


function identity(arg: number): number 
    return arg;
;

// 类型变量
function identity1<T>(arg: T): T 
    return arg;


let output = identity1<string>("myString")
let output2 = identity1("myString") // 类型断言,根据参数判断T的类型


function loggingIdentity<T>(arg: T[]): T[] 
    console.log(arg.length)
    return arg;


function loggingIdentity2<T>(arg: Array<T>): Arrary<T> 
    console.log(arg.length)
    return arg;



/** symbol */

let sym = Symbol();

let obj = 
    [sym]: "value"
;

console.log(obj[sym]); // "value"

// symbol表示独一无二的的,他接受一个字符串作为参数,表示对symbol的描述,如果参数是一个对象,它会调用对象的toString的方法转为string

const log = 

log.levels = 
    DEBUG: Symbol(‘debug‘),
    INFO: Symbol(‘info‘)


console.log(log.levels.DEBUG)

// 作为属性名的写法

let mySymbol = Symbol();

let a = ;
a[mySymbol] = ‘Hello!‘;

let a1 = 
    [mySymbol]: ‘Hello!‘


let a2 = 
Object.defineProperty(a, mySymbol,  value: ‘Hello!‘ );


// 属性名的遍历
// Object.getOwnPropertySymbols方法返回一个数组,成员是当前对象的所有用作属性名的Symbol值
const objSymbol = 
let aa = Symbol(‘aa‘);
let bb = Symbol(‘bb‘);

objSymbol[aa] = ‘aaa‘;
objSymbol[bb] = ‘bbb‘;

const objectSymbols = Object.getOwnPropertySymbols(objSymbol)
console.log(objectSymbols)

//重新使用同一个Symbol值,Symbol.for(),Symbol.keyFor()

//Symbol.for()与Symbol()这两种写法,都会生成新的 Symbol。它们的区别是,前者会被登记在全局环境中供搜索,后者不会。Symbol.for()不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。比如,如果你调用Symbol.for("cat")30 次,每次都会返回同一个 Symbol 值,但是调用Symbol("cat")30 次,会返回 30 个不同的 Symbol 值

console.log(Symbol.keyFor(mySymbol))

/** 枚举 */

// 使用枚举我们可以定义一些带名字的常量,使用枚举可以清晰的表达意图活创建一组有区别的用例。

// 数字枚举

enum Direction 
    Up = 1,
    Down,
    Left,
    Right


enum Response 
    No = 0,
    Yes =1

function respond(recipient: string, message: Response): void 
    // ...


respond("text", Response.No)

// 字符串枚举,每一个字符串枚举里,每个成员必须用字符串字面量,或另外一个字符串枚举成员进行初始化

enum Direction2 
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT"


enum E1 
    X,Y,Z


console.log(E1.X, E1.Y)

enum E2 
    A=1, B, C


console.log(E2.B)

enum FileAccess 
    // constant members
    None,
    Read    = 1 << 1,
    Write   = 1 << 2,
    ReadWrite  = Read | Write,
    // computed member
    G = "123".length


console.log(FileAccess.Read, FileAccess.Write, FileAccess.ReadWrite, FileAccess.G)

// 联合枚举与枚举成员类型

 

以上是关于..s的主要内容,如果未能解决你的问题,请参考以下文章

象棋相关

s-s-rS 报告 - 从没有 s-s-rS 服务器的 C# 导出

字符串常用操作

s-s-rS 报告需要在 s-s-rS 2008 (VS 2008) 中重用来自 s-s-rS 2005 (VS 2005) 的 rdl 文件

安装后:无法在 wd %s %s (wd=%s) 中运行

正则表达式 (\S+?) 与 (\S+)) [重复]