2016-05-24 9 views

答えて

3

Meteor 1.3以上のTypescriptで使用するのに最適なパッケージはaldeed:node-simple-schemaです。ドキュメントから

SimpleSchema

SimpleSchemaの歴史が最初に2013年半ばでの流星パッケージとしてリリースされました。 バージョン1.0は2014年9月にリリースされました.2016年半ば、バージョン2.0 がMeteor、NodeJS、 または静的ブラウザアプリケーションで使用できるNPMパッケージとしてリリースされました。 simpleschemaとsimpleschemaという名前の他のNPMのパッケージがありますSIMPL-スキーマを

インストール

NPMをインストールします。 パッケージを必ずインストールしてください。 「シンプル」には「e」はありません。

だから、活字体で正しいインポートは次のようになります。

import SimpleSchema from 'simpl-schema'; 

しかし、あなたの質問には、具体的タイピングについてです。 Meteorの入力を開始する場所は、https://github.com/meteor-typescript/meteor-typescript-libs/tree/master/definitionsにあるMeteorの入力ライブラリです。
collection2とsimple-schemaの定義がありますが、の古いシンプルスキーマです。彼らはあなたに良い出発点を与え、あなたは戻ってコレクション2のものをちょっと拾いたいと思うでしょう。最終的には、約1週間の検索の後/ etc。私は自分のセットを、Meteor Gitのオリジナルに基づいて書きました。うまくいけば、たとえ彼らがあなたに少し遅れていても、将来の検索人にとっては役立ちます。

declare module "simpl-schema" { 

export class ValidationContext { 
    constructor(ss: any); 
    addValidationErrors(errors: any): void; 
    clean(...args: any[]): any; 
    getErrorForKey(key: any, ...args: any[]): any; 
    isValid(): any; 
    keyErrorMessage(key: any, ...args: any[]): any; 
    keyIsInvalid(key: any, ...args: any[]): any; 
    reset(): void; 
    setValidationErrors(errors: any): void; 
    validate(obj: any, ...args: any[]): any; 
    validationErrors(): any; 
} 

interface SchemaDefinition { 
    type: any; 
    label?: string | Function; 
    optional?: boolean | Function; 
    min?: number | boolean | Date | Function; 
    max?: number | boolean | Date | Function; 
    minCount?: number | Function; 
    maxCount?: number | Function; 
    allowedValues?: any[] | Function; 
    decimal?: boolean; 
    exclusiveMax?: boolean; 
    exclusiveMin?: boolean; 
    regEx?: RegExp | RegExp[]; 
    custom?: Function; 
    blackbox?: boolean; 
    autoValue?: Function; 
    defaultValue?: any; 
    trim?: boolean; 
} 

interface CleanOption { 
    filter?: boolean; 
    autoConvert?: boolean; 
    removeEmptyStrings?: boolean; 
    trimStrings?: boolean; 
    getAutoValues?: boolean; 
    isModifier?: boolean; 
    extendAutoValueContext?: boolean; 
} 

interface SimpleSchemaStatic { 
    new(schema: {[key: string]: SchemaDefinition} | any[]): SimpleSchemaStatic; 
    debug: boolean; 
    namedContext(name?: string): SimpleSchemaValidationContextStatic; 
    addValidator(validator: Function): any; 
    pick(...fields: string[]): SimpleSchemaStatic; 
    omit(...fields: string[]): SimpleSchemaStatic; 
    clean(doc: any, options?: CleanOption): any; 
    schema(key?: string): SchemaDefinition | SchemaDefinition[]; 
    getDefinition(key: string, propList?: any, functionContext?: any): any; 
    keyIsInBlackBox(key: string): boolean; 
    labels(labels: {[key: string]: string}): void; 
    label(key: any): any; 
    Integer: RegExp; 
    messages(messages: any): void; 
    messageForError(type: any, key: any, def: any, value: any): string; 
    allowsKey(key: any): string; 
    newContext(): SimpleSchemaValidationContextStatic; 
    objectKeys(keyPrefix: any): any[]; 
    validate(obj: any, options?: ValidationOption): void; 
    validator(options: ValidationOption): Function; 
    RegEx: { 
     Email: RegExp; 
     EmailWithTLD: RegExp; 
     Domain: RegExp; 
     WeakDomain: RegExp; 
     IP: RegExp; 
     IPv4: RegExp; 
     IPv6: RegExp; 
     Url: RegExp; 
     Id: RegExp; 
     ZipCode: RegExp; 
     Phone: RegExp; 
    }; 
} 

interface ValidationOption { 
    modifier?: boolean; 
    upsert?: boolean; 
    clean?: boolean; 
    filter?: boolean; 
    upsertextendedCustomContext?: boolean; 
} 

interface SimpleSchemaValidationContextStatic { 
    validate(obj: any, options?: ValidationOption): boolean; 
    validateOne(doc: any, keyName: string, options?: ValidationOption): boolean; 
    resetValidation(): void; 
    isValid(): boolean; 
    invalidKeys(): { name: string; type: string; value?: any; }[]; 
    addInvalidKeys(errors: { name: string, type: string; }[]): void; 
    keyIsInvalid(name: any): boolean; 
    keyErrorMessage(name: any): string; 
    getErrorObject(): any; 
} 

interface MongoObjectStatic { 
    forEachNode(func: Function, options?: {endPointsOnly: boolean;}): void; 
    getValueForPosition(position: string): any; 
    setValueForPosition(position: string, value: any): void; 
    removeValueForPosition(position: string): void; 
    getKeyForPosition(position: string): any; 
    getGenericKeyForPosition(position: string): any; 
    getInfoForKey(key: string): any; 
    getPositionForKey(key: string): string; 
    getPositionsForGenericKey(key: string): string[]; 
    getValueForKey(key: string): any; 
    addKey(key: string, val: any, op: string): any; 
    removeGenericKeys(keys: string[]): void; 
    removeGenericKey(key: string): void; 
    removeKey(key: string): void; 
    removeKeys(keys: string[]): void; 
    filterGenericKeys(test: Function): void; 
    setValueForKey(key: string, val: any): void; 
    setValueForGenericKey(key: string, val: any): void; 
    getObject(): any; 
    getFlatObject(options?: {keepArrays?: boolean}): any; 
    affectsKey(key: string): any; 
    affectsGenericKey(key: string): any; 
    affectsGenericKeyImplicit(key: string): any; 
} 

export const SimpleSchema: SimpleSchemaStatic; 
export const SimpleSchemaValidationContext: SimpleSchemaValidationContextStatic; 
export const MongoObject: MongoObjectStatic; 

export interface SimpleSchema { 
    debug: boolean; 
    addValidator(validator: Function): any; 
    extendOptions(options: {[key: string]: any}): void; 
    messages(messages: any): void; 
    RegEx: { 
     Email: RegExp; 
     Domain: RegExp; 
     WeakDomain: RegExp; 
     IP: RegExp; 
     IPv4: RegExp; 
     IPv6: RegExp; 
     Url: RegExp; 
     Id: RegExp; 
     ZipCode: RegExp; 
     Phone: RegExp; 
    }; 
} 

export interface MongoObject { 
    expandKey(val: any, key: string, obj: any): void; 
} 

export default SimpleSchema; 
} 

これは、2011年4月23日時点の最新版に基づいています。ボーナスポイントのために

は、ここで設定を使用すると、次を探していることになります検証法、のためです:流星の世界でスキーマと検証に乗り出しています探索のために

declare module "meteor/mdg:validated-method" { 
    declare class ValidatedMethod<T> extends MeteorValidatedMethod.ValidatedMethod<T> { } 

    declare module MeteorValidatedMethod { 
     export class ValidatedMethod<T> { 
      constructor(options: ValidatedMethodOptions<T>); 
      call(options?: T, cb?: (err, res)=> void): void; 
     } 

     interface ValidatedMethodOptions<T> { 
      name: string; 
      mixins?: Function[]; 
      validate: any; 
      applyOptions: any; 
      run(opts: T); 
     } 
    } 
} 

、ここではいくつかあります検証パッケージを完成させるために役立つより多くのモジュール:

aldeed:collection2-core  2.0.0 Core package for aldeed:collection2 
aldeed:schema-deny   2.0.0 Deny inserting or updating certain properties through schema options 
aldeed:schema-index   2.0.0 Control some MongoDB indexing with schema options 
mdg:validated-method   1.1.0 A simple wrapper for Meteor.methods 
mdg:validation-error   0.5.1 A standard validation error to be used by form/method/validation packages 
関連する問題