Mold

Packhouse Mold

TypeScript

Mold的出現主要是因為JavaScript沒有Interface、Type等Struct的功能,這在運行過程時容易遇到非預期的錯誤。

TypeScript是一個解決方案,以下是使用時呈現的方式:

// Basic function
function sum(v1: number, v2: number): number {
    return v1 + v2
}

// Interface based
interface Person {
    firstName: string
    lastName: string
}

function greeter(person: Person) {
    return "Hello, " + person.firstName + " " + person.lastName
}

TypeScript的限制在編譯後就失去了功能,意味著今天在與客戶端交流時仍難以避免資料型態的意外。

How To Use

Mold不能被外部所引用,最直接的使用方法是宣告在Tool的Request內。

在執行時能便會附加檢查功能:

Expression

Mold可以藉由|符號加入參數,協助開發者應付特殊狀況。

Casting

能夠使用self.castingHandler中做轉換。

Null

在Request中宣告null可以忽略驗證欄位。

Optional

在名稱後加入?符號可以使該參數為nullundefined的時候忽略驗證。

Custom Define Mold

Mold可以同時具有檢查與轉換的功能,呈現的方式如下:

Mold不允許非同步運算。

第二個參數為context,能夠做更進階的應用:

Verify Expression

基於utils.verify的格式,有更好的結構表達與文件生產。

Core Molds

不是每個Mold都要重新定義,系統本身提供了許多常用的型態:

type

使用utils.getType作驗證。

  • { string } is - 目標type,一定需要該參數

number

參數必須為數字。

  • min - 數字必須高於指定數字

  • max - 數字必須低於指定數字

  • int - 數字轉換成整數

boolean

參數必須為truefalse

string

參數必須為字串。

  • is - 指定字串內容,可以用,分割多個對象。

array

參數必須為陣列。

buffer

參數必須為Buffer

object

參數必須為Object

function

參數必須為Function

date

參數必須為new Date支援的時間格式。

required

參數為必填。

如果你這樣寫required?,會無效。

Create Self Core Mold

開發人員可以自定義系統Mold,這樣就能夠在所有場合使用自定義Mold。

我們不建議個別自定義系統Mold,若有需要請參考Merger章節來管理Mold。

當系統Mold與Group Mold有相同名稱時,Group Mold優先。

Last updated

Was this helpful?