2016-08-22 4 views
1

コンポーネントを管理するためのクラスを作成しようとしていますが、実際にはユニオンタイプとTypeScriptタイプのガードに関する問題に悩まされています。自分の検証機能を使ってブロック/関数をガードする方法はありますか?

Ex。

namespace Validation { 
    export function isString(value: any): boolean { 
    return (typeof value === "string" || value instanceof String); 
    }; 
    export function isElement(value: any): boolean { 
    return (value instanceof Element); 
    }; 
}; 

class Component { 
    constructor(selectorOrElement: string | Element) { 
    var element: Element = (Validation.isString(selectorOrElement)) ? document.querySelector(selectorOrElement) : selectorOrElement; 

    if (!Validation.isElement(element)) throw new Error("element is null or not found"); 
    } 
} 

Screenshot of my code

私は自分のタイプの検証と共用体型を検証しようとしたが、活字体は、私はJavaScriptのデフォルトtypeof selectorOrElement === "string"element instanceof Elementこれを検証するとき、私は...有効なタイプとして変数を使用してみましょうdoesntの働く

独自の型検証を使用する表記法や方法はありますか?あなたは型ガードis Tを探している

+0

コード自体ではなく、スクリーンショットを添付してください。スクリーンショットは検索エンジンによって索引付けされません。 –

+0

@MikeMcCaughan、thx。私はいくつかのスニペットを追加しました – VitorLuizC

答えて

1

function isString(value: any): value is string { 
    return typeof value === 'string'; 
} 
関連する問題