`Null` এবং" অপরিজ্ঞাত "উভয়ের জন্য চেক করার কোনও উপায় আছে কি?


381

যেহেতু টাইপ করা বিষয় দৃঢ়ভাবে টাইপ করা হয়, কেবল ব্যবহার if () {}জন্য চেক করতে nullএবং undefinedঅধিকার লাগছে না।

টাইপস্ক্রিপ্টের কি এর জন্য কোনও ডেডিকেটেড ফাংশন বা সিনট্যাক্স চিনি রয়েছে?


9
Since TypeScript is strongly-typedআমি এটির
ডক্সে

3
সর্বশেষতম নন-অযোগ্য প্রকারভেদগুলি পড়ার পরামর্শ দিন, এটি টাইপস্ক্রিপ্ট 2, তবে ইতিমধ্যে বিটাতে রয়েছে। [অ-অণুশায়ী প্রকার # 7140] ( github.com/Mic Microsoft
TypeScript/

2
টাইপসক্রিপ্টের কিছু করার জন্য কোনও ডেডিকেটেড ফাংশন নেই। এটি একটি টাইপিং সিস্টেম এবং একটি ট্রান্সপোর্টার, লাইব্রেরি নয়।

উত্তর:


378

একটি জাগলিং-চেক ব্যবহার করে, আপনি উভয় nullএবং undefinedএকটি হিট উভয়ই পরীক্ষা করতে পারেন :

if (x == null) {

আপনি যদি কঠোর-চেক ব্যবহার করেন তবে এটি কেবল নির্ধারিত মানগুলির জন্য সত্য nullহবে এবং অপরিজ্ঞাত ভেরিয়েবলগুলির জন্য সত্য হিসাবে মূল্যায়ন করবে না:

if (x === null) {

এই উদাহরণটি ব্যবহার করে আপনি বিভিন্ন মান সহ এটি ব্যবহার করতে পারেন:

var a: number;
var b: number = null;

function check(x, name) {
    if (x == null) {
        console.log(name + ' == null');
    }

    if (x === null) {
        console.log(name + ' === null');
    }

    if (typeof x === 'undefined') {
        console.log(name + ' is undefined');
    }
}

check(a, 'a');
check(b, 'b');

আউটপুট

"a == নাল"

"একটি অপরিবর্তিত"

"খ == নাল"

"খ === নাল"


52
"জাগলিং-চেক" কী?
kolobok

18
@ ক্যাপেলকো এখানেই প্রকারটি আটকা পড়েছে (যেমন "আমরা কি এই ধরণের একটি বুলিয়ান তৈরি করতে পারি")। সুতরাং একটি খালি স্ট্রিং উদাহরণস্বরূপ, বুলিয়ান মিথ্যা হিসাবে গণ্য করা হয়। জাগলিং করার সময় একটি সাধারণ বাগ: "false" == false"ভুয়া" এর মতো একটি খালি খালি স্ট্রিং যা মূল্যায়ন করে true
ফেন্টন

12
এটি জেএসের 'টাইপ জবরদস্তির' কারণে।
আস্ট্রভাগ্রেন্ট

যদি x 0 হয় (এবং এটি একটি কার্যকর মান) তবে এটি আপনার অপরিজ্ঞাত / নাল পরীক্ষাটি পাস করবে।
জন গুন্টার

3
@ জোনগান্টার যে সত্যবাদী / মিথ্যা if(x)শৈলীর চেকের ক্ষেত্রে সত্য হবে , তবে তা নয় if(x == null), যা কেবল ধরা পড়ে nullএবং undefined। এটি ব্যবহার করে var c: number = 0; check(c, 'b');এটি পরীক্ষা করুন "নুলি" নয় null, বা undefined
ফেন্টন

267
if( value ) {
}

trueযদি valueনা হয় তবে তা মূল্যায়ন করবে :

  • null
  • undefined
  • NaN
  • খালি স্ট্রিং ''
  • 0
  • false

টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্ট বিধি অন্তর্ভুক্ত।


12
মানটি যদি বুলিয়ান প্রকারের হয়?
ranstigator

আপনি দুটি ভেরিয়েবল একত্রিত করতে পারেন যেমন। যদি (মান 1 && মান 2) তাদের উভয় অপরিবর্তিত আছে কিনা তা পরীক্ষা করে দেখুন?
আরকে

8
@ রমজানসায়র হ্যাঁ ধন্যবাদ আমি জানি যে, তবে 0 টি মানটি এমন কিছু বৈধ যা আমার কাছে থাকতে পারে, কেবলমাত্র আমি যা করতে চাই তা হল ভেরিয়েবলটি নাল বা অপরিজ্ঞাত নয়। আমি পড়েছি যে আমি ভাল! = নাল ব্যবহার করে এটি করতে পারি (=! এর পরিবর্তে! == অপরিবর্তিত মানও পরীক্ষা করে)
অ্যালেক্স

4
Tslint বিধি - "কঠোর-বুলিয়ান-এক্সপ্রেশন" সক্ষম করা থাকলে এই সমাধানটি কাজ করবে না।
ip_x

1
এটি মিথ্যা মূল্যায়ন করবে যদি আমাদের কাছে মিথ্যা মান দেয় তবে এর চেয়ে সহজ।
আইফ্রি

50

টাইপস্ক্রিপ্ট এর জন্য ডেডিকেটেড ফাংশন বা সিনট্যাক্স চিনির কাজ করে

টাইপ করা বিষয় সম্পূর্ণরূপে জাভাস্ক্রিপ্ট সংস্করণ যা বুঝতে পারে something == null

টাইপসক্রিপ্ট উভয়ই nullএবং এই undefinedজাতীয় চেকগুলি দিয়ে সঠিকভাবে রায় দেয় ।

অধিক

https://basarat.gitbook.io/typescript/recap/null-undefined


1
আমি দুটি সমান করতে পছন্দ করি myVar == null। ঠিক অন্য একটি বিকল্প।
ডেভিড শেরেট

30
== nullনাল এবং অপরিজ্ঞাত জন্য পরীক্ষা করার সঠিক উপায়। !!somethingজেএসের শর্তসাপেক্ষে একটি অব্যর্থ জবরদস্তি (কেবল ব্যবহার something)। !!something0 এবং '' কে মিথ্যা বলার জন্যও বাধ্য করবে, যদি আপনি শূন্য / অপরিজ্ঞাত খুঁজছেন তবে আপনি যা করতে চান তা নয়।
সি স্নোভার

39

আমি টাইপ স্ক্রিপ্ট খেলার মাঠে বিভিন্ন পরীক্ষা করেছি:

http://www.typescriptlang.org/play/

let a;
let b = null;
let c = "";
var output = "";

if (a == null) output += "a is null or undefined\n";
if (b == null) output += "b is null or undefined\n";
if (c == null) output += "c is null or undefined\n";
if (a != null) output += "a is defined\n";
if (b != null) output += "b is defined\n";
if (c != null) output += "c is defined\n";
if (a) output += "a is defined (2nd method)\n";
if (b) output += "b is defined (2nd method)\n";
if (c) output += "c is defined (2nd method)\n";

console.log(output);

দেয়:

a is null or undefined
b is null or undefined
c is defined

তাই:

  • (a == নাল) কোনও নাল বা অপরিজ্ঞাত কিনা তা জানতে সঠিকভাবে পরীক্ষা করা হচ্ছে
  • (a! = নাল) কোনটি সংজ্ঞায়িত হয়েছে কিনা তা সঠিক কিনা তা পরীক্ষা করা হচ্ছে
  • (ক) কোনটি সংজ্ঞায়িত হয়েছে কিনা তা জানা কিনা তা পরীক্ষা করা

1
আপনি কেন এর জন্য টাইপস্ক্রিপ্ট খেলার মাঠ ব্যবহার করবেন? টাইপস্ক্রিপ্টের সাথে এখানে কিছুই করার নেই।

10
যেহেতু প্রশ্নটি টাইপস্ক্রিপ্টের সাথে সম্পর্কিত, তাই আমি টাইপস্ক্রিপ্ট ট্রান্সপ্লেলারের বিপরীতে প্রস্তাবিত বিভিন্ন সমাধান পরীক্ষা করার চেষ্টা করছিলাম।
জুয়াংউই জর্ডান

6
টিএস ট্রান্সপোর্টার এই কোডের কোনওটিরই কোনও রূপান্তর করবে না।

31

আমি মনে করি এই উত্তরটির একটি আপডেট দরকার, পুরানো উত্তরের সম্পাদনার ইতিহাস পরীক্ষা করুন।

মূলত, আপনার কাছে তিনটি আলাদা কেস নাল, অপরিজ্ঞাত এবং অঘোষিত রয়েছে, নীচের স্নিপেটটি দেখুন।

// bad-file.ts
console.log(message)

আপনি একটি ত্রুটি পেয়ে যাবেন যে ভেরিয়েবল messageঅপরিজ্ঞাত (ওরফে অঘোষিত) অবশ্যই, টাইপস্ক্রিপ্ট সংকলক আপনাকে এটি করতে দেবে না কিন্তু আসলে কিছুই আপনাকে বাধা দিতে পারে না।

// evil-file.ts
// @ts-gnore
console.log(message)

সংকলক কেবল উপরের কোডটি সংকলন করে খুশি হবে। সুতরাং, যদি আপনি নিশ্চিত হন যে সমস্ত ভেরিয়েবলগুলি ঘোষিত হয়েছে তবে আপনি কেবল এটি করতে পারেন

if ( message != null ) {
    // do something with the message
}

উপরের কোডটি চেক করবে nullএবং undefined, তবে messageভেরিয়েবলটি অঘোষিত হতে পারে (সুরক্ষার জন্য), আপনি নিম্নলিখিত কোডটি বিবেচনা করতে পারেন

if ( typeof(message) !== 'undefined' && message !== null ) {
    // message variable is more than safe to be used.
}

দ্রষ্টব্য: এখানে অর্ডারটি typeof(message) !== 'undefined' && message !== nullঅত্যন্ত গুরুত্বপূর্ণ যে আপনাকে undefinedপ্রথমে রাজ্যের জন্য যাচাই করতে হবে এটি যথাযথ হবে message != null, ধন্যবাদ @ জয়দার।


4
এম। কামাল যদি কিছু = 0, আপনার যাচাইয়ের সাথে! কিছু আপনাকে সমস্যা দেয়।
জাস্টকোড

1
@ আর্টুরিওস আপনি দয়া করে আমাকে একটি উদাহরণ দিতে পারেন !!
আহমেদ কামাল

2
@arturios তবে 0 ইতিমধ্যে জাভাস্ক্রিপ্টে একটি মিথ্যা মান !! তো এখানে কী কথা?
আহমেদ কামাল

1
@ আল-আন না, এটিকে এখানে
আহমেদ কামাল

1
আপডেট করা সংস্করণটি ভুল। প্রথম যাচাই করা জিনিসটি if(typeof something !== 'undefined' && something !== null){...}
অপরিজ্ঞাত

27

ইন টাইপ করা বিষয় 3.7 আমরা এখন ঐচ্ছিক chaining এবং Nullish কোয়ালেসিং চেক করতে নাল এবং undefined একই সময়, উদাহরণস্বরূপ:

let x = foo?.bar.baz();

এই কোডটি foo সংজ্ঞায়িত করা হয়েছে কিনা তা যাচাই করবে অন্যথায় এটি অপরিবর্তিত রয়েছে

পুরানো উপায় :

if(foo != null && foo != undefined) {
   x = foo.bar.baz();
} 

এই:

let x = (foo === null || foo === undefined) ? undefined : foo.bar();

if (foo && foo.bar && foo.bar.baz) { // ... }

Alচ্ছিক চেইন সহ হবে:

let x = foo?.bar();

if (foo?.bar?.baz) { // ... }

আর একটি নতুন বৈশিষ্ট্য হ'ল নুলিশ কোলেসিং , উদাহরণস্বরূপ:

let x = foo ?? bar(); // return foo if it's not null or undefined otherwise calculate bar

পুরানো উপায়:

let x = (foo !== null && foo !== undefined) ?
foo :
bar();

3
এটি এখনই গ্রহণযোগ্য উত্তর হওয়া উচিত। টাইপসক্রিপ্ট 3.7 এছাড়াও "নুলিশ কোয়েলসিং" সমর্থন করে। var foo = সম্ভাব্য সংজ্ঞায়িতঅরনল ?? fallbackValueIfFirstValueIsUndefinedOrNull; : এখানে ডকুমেন্টেশন typescriptlang.org/docs/handbook/release-notes/...
tkd_aj

23

আপনি চেষ্টা করতে পারেন

if(!!someValue)

সঙ্গে !!

ব্যাখ্যা

প্রথমটি !আপনার অভিব্যক্তিটিকে একটি booleanমানে পরিণত করবে ।

তারপর !someValueহয় trueযদি someValueহয় falsy এবং falseযদি someValueহয় truthy । এটি বিভ্রান্তিকর হতে পারে।

অন্য যোগ করে !মত প্রকাশের এখন trueযদি someValueহয় truthy এবং falseযদি someValueহয় falsy , যা অনেক পরিচালনা করা সহজ।

আলোচনা

এখন, আমি কেন নিজেকে বিরক্ত করব if (!!someValue)যখন এমন কিছু if (someValue)আমাকে একই ফলাফল দেয়?

কারণ !!someValueনিখুঁতভাবে একটি বুলিয়ান এক্সপ্রেশন, যেখানে someValueএকেবারে কিছু হতে পারে। এই ধরণের অভিব্যক্তিটি এখন ফাংশনগুলি লেখার অনুমতি দেয় (এবং Godশ্বরের আমাদের সেগুলি দরকার) যেমন:

isSomeValueDefined(): boolean {
  return !!someValue
}

পরিবর্তে:

isSomeValueDefined(): boolean {
  if(someValue) {
    return true
  }
  return false
}

আমি আসা করি এটা সাহায্য করবে.


সুতরাং, যদি কিছু ভ্যালু 'মিথ্যা' হয় (স্ট্রিং টাইপ সহ), তবে !! কিছু ভ্যালু মিথ্যা (বুলিয়ান টাইপ)?
পল চেউং

আমার ধারণা আপনি এই কথাটি বলতে পারেন this এই প্রযুক্তিটি সঠিকভাবে এই ধরণের বিভ্রান্তি এড়াতে ব্যবহৃত হয়। আশা করি তুমি পছন্দ করেছ!
avi.elkharrat

তবে আমাকে কী বিভ্রান্ত করেছে !! 'মিথ্যা' সমান সত্য। কেবল এই ক্ষেত্রে, আমি এই টেকনিকটি ব্যবহার করতে পারি না।
পল চেউং

!!'false'দলিল হয় trueকারণ 'false'একটি বৈধ স্ট্রিং
avi.elkharrat

সুতরাং এই টেকনিক এই কেসটি কভার করতে পারে না, বা কোনও কার্য সমাধান রয়েছে?
পল চেউং

16

জন্য Typescript 2.x.xআপনি একটি নিম্নলিখিত পদ্ধতিতে এটি করতে হবে (ব্যবহার টাইপ পাহারা ):

TL; ড

function isDefined<T>(value: T | undefined | null): value is T {
  return <T>value !== undefined && <T>value !== null;
}

কেন?

এইভাবে isDefined()ভেরিয়েবলের ধরণকে সম্মান জানাবে এবং নিম্নলিখিত কোডটি এই চেকটিকে অ্যাকাউন্টে নিতে হবে know

উদাহরণ 1 - বেসিক চেক:

function getFoo(foo: string): void { 
  //
}

function getBar(bar: string| undefined) {   
  getFoo(bar); //ERROR: "bar" can be undefined
  if (isDefined(bar)) {
    getFoo(bar); // Ok now, typescript knows that "bar' is defined
  }
}

উদাহরণ 2 - প্রকার শ্রদ্ধা:

function getFoo(foo: string): void { 
  //
}

function getBar(bar: number | undefined) {
  getFoo(bar); // ERROR: "number | undefined" is not assignable to "string"
  if (isDefined(bar)) {
    getFoo(bar); // ERROR: "number" is not assignable to "string", but it's ok - we know it's number
  }
}

14
if(data){}

এর অর্থ!

  • খালি
  • অনির্দিষ্ট
  • মিথ্যা
  • ....

2
এবং যদি ডেটা বুলিয়ান টাইপ হয়?
ranstigator

আপনি দুটি ভেরিয়েবল একত্রিত করতে পারেন যেমন। যদি (মান 1 && মান 2) তাদের উভয় অপরিবর্তিত আছে কিনা তা পরীক্ষা করে দেখুন?
আরকে

@িয়ানস্টিগেটর একটি বুলিয়ানকে কেবল trueবা falseকেবল হিসাবে মূল্যায়ন করা যেতে পারে । আপনার যদি কোনও nullঅ্যাসাইনমেন্ট বা undefinedমান সহ একটি বুলিয়ান থাকে তবে উভয় ক্ষেত্রেই মানটিকে মূল্যায়ন করা হবে false
কেবিদেভ

5

আপনি যদি টাইপস্ক্রিপ্ট ব্যবহার করে থাকেন, রান-টাইমে তাদের পরীক্ষা করার পরিবর্তে সংকলকটি নাল এবং অপরিজ্ঞাত (বা এর সম্ভাব্যতা) পরীক্ষা করার চেয়ে আরও ভাল পদ্ধতির। (আপনি যদি রান-টাইমে চেক করতে চান না, তবে যতগুলি উত্তর নির্দেশিত হয়, কেবল ব্যবহার করুন value == null)।

strictNullChecksসংকলকটিকে সম্ভাব্য নাল বা অপরিজ্ঞাত মানগুলিতে শ্বাসরোধ করতে বলতে সংকলন বিকল্পটি ব্যবহার করুন । যদি আপনি এই বিকল্পটি সেট, এবং তারপর সেখানে একটি অবস্থা যেখানে আপনি হয়, তাহলে কি নাল অনুমতি ও অনির্ধারিত চান, আপনি যেমন টাইপ বর্ণনা করতে পারেন Type | null | undefined


5

আপনি পাস করতে চান, tslintসেটিং ছাড়া strict-boolean-expressionsকরার allow-null-unionবা allow-undefined-union, আপনি ব্যবহার করতে হবে isNullOrUndefinedথেকে nodeএর utilমডিউল বা আপনার নিজের রোল:

// tslint:disable:no-null-keyword
export const isNullOrUndefined =
  <T>(obj: T | null | undefined): obj is null | undefined => {
    return typeof obj === "undefined" || obj === null;
  };
// tslint:enable:no-null-keyword

ঠিক সিনট্যাকটিক চিনি নয় তবে যখন আপনার স্লিন্টের নিয়ম কঠোর হয়।


1

nullচেকগুলির জন্য একটি দ্রুত এবং সংক্ষিপ্ত স্বরলিপি হতে পারে:

value == null ? "UNDEFINED" : value

এই লাইনটি সমান:

if(value == null) {
       console.log("UNDEFINED")
} else {
    console.log(value)
}

বিশেষত যখন আপনার অনেক nullচেক থাকে এটি একটি দুর্দান্ত সংক্ষিপ্ত স্বরলিপি।


1

আমার এই সমস্যাটি ছিল এবং উত্তরগুলির কয়েকটি ঠিক কাজ করে JSতবে TSএখানে নয় কারণ এর কারণ।

//JS
let couldBeNullOrUndefined;
if(couldBeNullOrUndefined == null) {
  console.log('null OR undefined', couldBeNullOrUndefined);
} else {
  console.log('Has some value', couldBeNullOrUndefined);
}

জেএসের কোনও প্রকার নেই বলেই এটি বেশ ভাল

//TS
let couldBeNullOrUndefined?: string | null; // THIS NEEDS TO BE TYPED AS undefined || null || Type(string)

if(couldBeNullOrUndefined === null) { // TS should always use strict-check
  console.log('null OR undefined', couldBeNullOrUndefined);
} else {
  console.log('Has some value', couldBeNullOrUndefined);
}

হিজড়া সালে পরিবর্তনশীল সংজ্ঞায়িত করা হয় নি যদি nullযখন আপনি যে জন্য চেক করতে চেষ্টা | সংকলক অভিযোগ করবে।nulltslint

//tslint.json
...
"triple-equals":[true],
...
 let couldBeNullOrUndefined?: string; // to fix it add | null

 Types of property 'couldBeNullOrUndefined' are incompatible.
      Type 'string | null' is not assignable to type 'string | undefined'.
        Type 'null' is not assignable to type 'string | undefined'.

1

এই থ্রেডে যোগ দিতে দেরি হলেও আমি এই জাভাস্ক্রিপ্ট হ্যাকটিকে খুব কার্যকর বলে মনে করি যে কোনও মান অপরিজ্ঞাত

 if(typeof(something) === 'undefined'){
   // Yes this is undefined
 }

1

ফেন্টন ইতিমধ্যে আলোচিত হিসাবে আমি জাগলিং-চেক করি । এটিকে আরও পঠনযোগ্য করার জন্য, আপনি রামদা থেকে ইসিল ব্যবহার করতে পারবেন ।

import * as isNil from 'ramda/src/isNil';

totalAmount = isNil(totalAmount ) ? 0 : totalAmount ;

1

ভার্ভোজ উপায় হিসাবে, আপনি যদি কেবল নাল এবং অপরিজ্ঞাত মানগুলির তুলনা করতে চান তবে রেফারেন্সের জন্য নিম্নলিখিত উদাহরণ কোডটি ব্যবহার করুন:

const incomingValue : string = undefined;
const somethingToCompare : string = incomingValue; // If the line above is not declared, TypeScript will return an excepion

if (somethingToCompare == (undefined || null)) {
  console.log(`Incoming value is: ${somethingToCompare}`);
}

যদি incomingValueএটি ঘোষণা না করা হয়, তবে টাইপসক্রিপ্টের একটি ব্যতিক্রম ফিরে পাওয়া উচিত। যদি এটি ঘোষণা করা হয় তবে সংজ্ঞায়িত না করা হয়, তবে console.log()"ইনকামিং মান হ'ল: অপরিবর্তিত" ফিরে আসবে। নোট করুন আমরা কঠোর সমতুল্য অপারেটরটি ব্যবহার করছি না।

"সঠিক" উপায় (বিশদটির জন্য অন্যান্য উত্তরগুলি পরীক্ষা করুন), যদি এটি incomingValueকোনও booleanপ্রকার না হয় তবে কেবল মূল্য নির্ধারণ করুন যদি এর মান সত্য হয় তবে ধ্রুবক / পরিবর্তনশীল প্রকার অনুসারে এটি মূল্যায়ন করা হবে। একটি trueস্ট্রিং স্পষ্টভাবে = ''অ্যাসাইনমেন্ট ব্যবহার করে স্ট্রিং হিসাবে সংজ্ঞায়িত করতে হবে । যদি তা না হয় তবে এটি হিসাবে মূল্যায়ন করা হবে false। একই প্রসঙ্গটি ব্যবহার করে এই কেসটি পরীক্ষা করা যাক:

const incomingValue : string = undefined;
const somethingToCompare0 : string = 'Trumpet';
const somethingToCompare1 : string = incomingValue;

if (somethingToCompare0) {
  console.log(`somethingToCompare0 is: ${somethingToCompare0}`); // Will return "somethingToCompare0 is: Trumpet"
}

// Now, we will evaluate the second constant
if (somethingToCompare1) {
  console.log(`somethingToCompare1 is: ${somethingToCompare1}`); // Launched if incomingValue is defined
} else {
  console.log(`somethingToCompare1 is: ${somethingToCompare1}`); // Launched if incomingValue is undefined. Will return "somethingToCompare1 is: undefined"
}

somethingToCompare == (অপরিবর্তিত || নাল)। (অপরিবর্তিত || নাল)
নালার

@ কার্লোসভিনি শিওর, তুলনার মূল বিষয়টিটি ভার্জোজ এবং রেফারেন্সের জন্য একটি কোড সরবরাহ করতে হবে। অ-কঠোর সমান তুলনা করার কারণ এটি। উত্তরের উদ্দেশ্যটি স্পষ্ট এবং স্পষ্ট করে বলা। বিভ্রান্তি এড়াতে আমি পাঠ্যটি সম্পাদনা করব
কেবিদেভ


0

সব,

সর্বাধিক ভোট সহ উত্তর, আপনি যদি কোনও বস্তুর সাথে কাজ করে থাকেন তবে সত্যিই কাজ করে না। সেক্ষেত্রে কোনও সম্পত্তি উপস্থিত না থাকলে চেকটি কাজ করবে না। এবং আমাদের ক্ষেত্রে এটি ছিল সমস্যা: এই নমুনাটি দেখুন:

var x =
{ name: "Homer", LastName: "Simpson" };

var y =
{ name: "Marge"} ;

var z =
{ name: "Bart" , LastName: undefined} ;

var a =
{ name: "Lisa" , LastName: ""} ;

var hasLastNameX = x.LastName != null;
var hasLastNameY = y.LastName != null;
var hasLastNameZ = z.LastName != null;
var hasLastNameA = a.LastName != null;



alert (hasLastNameX + ' ' + hasLastNameY + ' ' + hasLastNameZ + ' ' + hasLastNameA);

var hasLastNameXX = x.LastName !== null;
var hasLastNameYY = y.LastName !== null;
var hasLastNameZZ = z.LastName !== null;
var hasLastNameAA = a.LastName !== null;

alert (hasLastNameXX + ' ' + hasLastNameYY + ' ' + hasLastNameZZ + ' ' + hasLastNameAA);

ফলাফল:

true , false, false , true (in case of !=)
true , true, true, true (in case of !==) => so in this sample not the correct answer

plunkr লিঙ্ক: https://plnkr.co/edit/BJpVHD95FhKlpHp1skUE


এটি ভাল পরীক্ষা নয়। এই মানগুলির কোনওটিই কঠোরভাবে নয় null । এটি চেষ্টা করুন: plnkr.co/edit/NfiVnQNes1p8PvXd1fCG?p= পূর্বরূপ
সিমোনহ্যাম্প

0

যেহেতু টাইপস্ক্রিপ্ট ES6 জাভাস্ক্রিপ্টের একটি টাইপ করা সুপারসেট। এবং লোডাশ জাভাস্ক্রিপ্টের একটি লাইব্রেরি।

মান নাল বা অপরিজ্ঞাত কিনা তা পরীক্ষা করে লড্যাশ ব্যবহার করে করা যেতে পারে _.isNil()

_.isNil(value)

যুক্তি

মান (*): চেক করার মান।

রিটার্নস

(বুলিয়ান) : মানটি যদি নালিশ হয় তবে সত্য হয়, অন্যথায় মিথ্যা।

উদাহরণ

_.isNil(null);
// => true

_.isNil(void 0);
// => true

_.isNil(NaN);
// => false

লিংক

লোডাশ ডক্স


1
এই পদ্ধতিটি -2 কেন? টাইপ স্ক্রিপ্ট দিয়ে লোডাশ ভাল না?
থমাস পোইগ্যান্যান্ট

0

সতর্কতা অবলম্বন করুন আপনি যদি স্থানীয় সঞ্চয়স্থান ব্যবহার করছেন তবে মানটি অপরিজ্ঞাত না করে আপনি স্ট্রিংটি অপরিজ্ঞাত করে শেষ করতে পারেন:

localStorage.setItem('mykey',JSON.stringify(undefined));
localStorage.getItem('mykey') === "undefined"
true

লোকেরা এটি দরকারী খুঁজে পেতে পারে: https://github.com/angular/components/blob/master/src/cdk/coercion/boolean-property.spec.ts

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

/** Coerces a data-bound value (typically a string) to a boolean. */
export function coerceBooleanProperty(value: any): boolean {
  return value != null && `${value}` !== 'false';
}

import {coerceBooleanProperty} from './boolean-property';

describe('coerceBooleanProperty', () => {

  it('should coerce undefined to false', () => {
    expect(coerceBooleanProperty(undefined)).toBe(false);
  });

  it('should coerce null to false', () => {
    expect(coerceBooleanProperty(null)).toBe(false);
  });

  it('should coerce the empty string to true', () => {
    expect(coerceBooleanProperty('')).toBe(true);
  });

  it('should coerce zero to true', () => {
    expect(coerceBooleanProperty(0)).toBe(true);
  });

  it('should coerce the string "false" to false', () => {
    expect(coerceBooleanProperty('false')).toBe(false);
  });

  it('should coerce the boolean false to false', () => {
    expect(coerceBooleanProperty(false)).toBe(false);
  });

  it('should coerce the boolean true to true', () => {
    expect(coerceBooleanProperty(true)).toBe(true);
  });

  it('should coerce the string "true" to true', () => {
    expect(coerceBooleanProperty('true')).toBe(true);
  });

  it('should coerce an arbitrary string to true', () => {
    expect(coerceBooleanProperty('pink')).toBe(true);
  });

  it('should coerce an object to true', () => {
    expect(coerceBooleanProperty({})).toBe(true);
  });

  it('should coerce an array to true', () => {
    expect(coerceBooleanProperty([])).toBe(true);
  });
});

-4

আমি সবসময় এটি লিখি:

var foo:string;

if(!foo){
   foo="something";    
}

এটি দুর্দান্ত কাজ করবে এবং আমি মনে করি এটি খুব পঠনযোগ্য।


21
সংখ্যার জন্য কাজ করবে না কারণ পরীক্ষাও 0পাস করে !foo
হেসেন

10
বুলিয়ানদের জন্যও কাজ করে না, এর undefinedচেয়ে আলাদা কোথায় false। এটি function fn(flag?: boolean) { if (typeof flag === "undefined") flag = true; /* set default value */ }
alচ্ছিক

Booleans জন্য কাজ ঠিক বলে মনে হয়: var isTrue; if(isTrue)//skips, if(!isTrue)// enters if(isTrue === undefined)//enters। এটি টাইপস্ক্রিপ্টেও চেষ্টা করেছেন var isTrue:booleanযার সাথে অপরিবর্তিত ছিল এবং যদি চেক হয় তবে এটি একই রকম। জিঙ্গি, আপনি যা চেষ্টা করেছিলেন এবং আমি যা চেষ্টা করেছি সে সম্পর্কে কিছু আলাদা আছে?
শ্রেনাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.