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引擎代码部分——函数的主要内容,如果未能解决你的问题,请参考以下文章