Skip to content

Scalar (純量型別)

內建 scalar

TypeSpectypeformat
stringstring
booleanboolean
integerinteger—(抽象型別,寬度未定)
numericfloatnumber—(抽象型別,寬度未定)
int8 / int16 / int32 / int64integerint8 / int16 / int32 / int64
safeintintegerint64
uint8 / uint16 / uint32 / uint64integeruint8 / uint16 / uint32 / uint64
float32numberfloat
float64numberdouble
decimalnumberdecimal
decimal128numberdecimal128
bytesstringbyte
plainDatestringdate
plainTimestringtime
utcDateTimeoffsetDateTimestringdate-time
durationstringduration
urlstringuri

Intrinsic 型別:null{ type: "null" }nevervoid{ not: {} }(任何值都不合法);unknown{}(任何值都合法)。

使用者自訂 scalar

extends 宣告的 scalar 繼承基底的形狀,再疊上自己的文件與驗證關鍵字。scalar 的限制會跟著它到每個使用處:

typespec
@doc("An RFC 5321 mailbox address.")
@maxLength(254)
scalar Email extends string;

model Account {
  email: Email;
}
yaml
components:
  schemas:
    Account:
      type: object
      properties:
        email:
          type: string
          description: An RFC 5321 mailbox address.
          maxLength: 254
      required:
        - email

若屬性重複宣告了 scalar 已帶的關鍵字(例如 scalar 有 @minLength(5),屬性又標 @minLength(2)),兩個限制會以 allOf 疊加,兩者都要成立。使用處不能靜默弱化 scalar 的限制。