TS编程——面向对象随手录——接口_命名空间——重构javaScrip 3D引擎代码部分——函数

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TS编程——面向对象随手录——接口_命名空间——重构javaScrip 3D引擎代码部分——函数相关的知识,希望对你有一定的参考价值。

导出一个接口:

export default interface Inner
    fun():void;

类去实现一个接口;
实现的时候类型推导出已经引用:
可以使用接口来确保类拥有指定的结构,约束对象,避免很多潜在的小错误。
尤其在写字面量对象时

import Inner from "./Interfaces";
class person implements Inner
    fun(): void 
        
    


命名空间

命名空间,又称为内部模块,被用于组织一些就有某些内在联系的特性和对象。
使得代码结构更清晰;
可以使用namespace和export关键字。还有这个module,作用差不多!

namespace Comment
    interface Ia

    
    interface Ib

    
    interface Ic

    
    export class A implements Ia,Ib

    
    export class B implements Ia,Ic

    
    export function abc()

    


var obj1 = new Comment.A();
var obj2 = new Comment.B();

注意如果接口或者类,还是变量或者方法,没有在声明之前加export关键字。那么就在外部访问不到。


上面例子就是一个简单的javascript 3D引擎代码的一小部分。在3D引擎中有大量的关于矩阵和矢量的计算。
创建了一个Geometry模块,添加一些相关操作和计算;

var obj:Geometry.Iv2 =new Geometry.Vv2(2,3)
obj.normalize();
obj.toArray(function(n:Array<number>)
    console.log("x:"+n[0]+"y:"+n[1]);
   
)

函数类型

  • 被赋值的变量类型和函数类型必须一致
  • 注意变量提示
interface Ia
    (name:string):string;

var fn:Ia= function Ia(a)
    return a

console.log(fn("aaa"));///aaa

有可选参数的函数
值得注意的是可选参数必须位于必选参数列表的后面。
增加其函数的灵活性

function add(a:number,b:number,c?:number)
    var resulet:number = a+b;
    if(c !== undefined)
        resulet += c;
     

这里写错的话会有提示:类型推论

默认参数:
默认参数位于必选参数之后
undefined == void 0//true

function add(a:number,b:number=0,c?:number)
    var resulet:number = a+b;
    if(c !== undefined)
        resulet += c;
     

有剩余参数的函数
开发者传递任意数量的参数
一个剩余参数必须包含一个数组类型

function add(...arr:Array<number>):number
    var sum = arr.reduce((v,t)=>v+t);
    return sum;

函数重载:
同名不同参数!!!!

function test(value:(number|string|boolean))
    switch(typeof value)
        case "string":
            return "value is string"
        case "number":
            return `$value is number`
    

以上是关于TS编程——面向对象随手录——接口_命名空间——重构javaScrip 3D引擎代码部分——函数的主要内容,如果未能解决你的问题,请参考以下文章

面向对象封装 命名空间 访问修饰符等

python面向对象之命名空间及组合

python-面向对象的命名空间和组合

PHP面向对象 – 命名空间

day24 面向对象,交互,组合,命名空间,初始继承

目录大纲