2017-03-08 66 views
3

私はTypeScriptとC#でコード規約を研究しており、C#で""の代わりにstring.Emptyを使用するルールを考え出しました。TypeScriptでstring.Emptyを定義することはできますか?

C#の例:

doAction(""); 
doAction(string.Empty); // we chose to use this as a convention. 

活字体:

// only way to do it that I know of. 
doAction(""); 

今、私の質問は同様に活字体で、このルールを維持する方法に一貫性があっている場合、またはこの言語は、特定のでしょうか?

TypeScriptで空の文字列を定義する方法はありますか?

答えて

4

本当にやりたければnew String()を気にする必要があります

+0

ありがとう、私はこれが最高のものだと思います。私たちは ""使っています。 – Veslav

1

String.Emptyのは、.NET(感謝@Servy)に固有のものです

""

よりも空の文字列を作成する他の方法はありません確かにnew String()または''のような他の方法は、ありますが、文字列プリミティブではなく、比較時に異なるStringオブジェクト(https://stackoverflow.com/a/9946836/6754146

+0

それを呼び出します。あなたは機能について忘れるべきです... – Veslav

+0

ああ、すみません、私は混乱しています。 –

+0

ああありがとう、私は今確かに知っています。 – Veslav

2

は、定義を持っているタイプStringがある「」

interface StringConstructor { 
    Empty: string; 
} 

String.Empty = ""; 

function test(x: string) { 

} 

test(String.Empty); 

をしかし、あなたが見ることができるように、ちょうどString.Emptyをかを渡すには差がありません:それは、あなたがこれを行うには、コードを書くことができlib.d.tsにある(他の場所もあります)このライブラリはと定義されています。 Stringの型メンバー定義は、一般的にfromCharCodeのように使用されます。あなたはこのタイプをemptyで、新たに参照されるtypescriptファイルに拡張することができます。

StringExtensions.ts

declare const String: StringExtensions; 
interface StringExtensions extends StringConstructor { 
    empty: ''; 
} 
String.empty = ''; 

そして、私はちょうどtypescriptです空の文字列を定義する方法を模索していた

otherFile.ts

doAction(String.Empty); // notice the capital S for String 
+0

@vinternの返事をnoobiesでもっと明確にすることに感謝しますが、私は彼に信用を与えます。 ;) – Veslav

+0

あなたのアプローチは本当に好きですが、tscは "node_modules/typescript/lib/lib.es2015.core.d.ts(437,11):エラーTS2451:ブロックスコープ変数 'String'を再宣言できません。 src /app/extensions/StringExtensions.ts(1,15):エラーTS2451:ブロックスコープの変数 'String'を再宣言できません。 " –

関連する問題