Napi::Value is the C++ manifestation of a JavaScript value. It is the base class upon which other JavaScript values such as Napi::Number, Napi::Boolean, Napi::String, and Napi::Object are based. It represents a JavaScript value of an unknown type. It is a thin wrapper around the Node-API datatype napi_value. Methods on this class can be used to check the JavaScript type of the underlying Node-API napi_value and also to convert to C++ types.
Napi::Value::Value();
Creates a new empty Napi::Value instance.
Napi::Value::Value(napi_env env, napi_value value);
[in] env: The napi_env environment in which to construct the Napi::Value object.[in] value: The C++ primitive from which to instantiate the Napi::Value. value` may be any of:boolconst char* (encoded using UTF-8, null-terminated)const char16_t* (encoded using UTF-16-LE, null-terminated)std::string (encoded using UTF-8)std::u16stringNapi::Valuenapi_valueNapi::Value::operator napi_value() const;
Returns the underlying Node-API napi_value. If the instance is empty, this returns nullptr.
bool Napi::Value::operator ==(const Napi::Value& other) const;
Returns true if this value strictly equals another value, or false otherwise.
bool Napi::Value::operator !=(const Napi::Value& other) const;
Returns false if this value strictly equals another value, or true otherwise.
template <typename T> T Napi::Value::As() const;
Casts to another type of Napi::Value, when the actual type is known or assumed.
This conversion does not coerce the type. Calling any methods inappropriate for the actual value type will throw Napi::Error. When C++ exceptions are disabled, the thrown error will not be reflected before control returns to JavaScript.
In order to enforce expected type, use Napi::Value::Is*() methods to check the type before calling Napi::Value::As(), or compile with definition NODE_ADDON_API_ENABLE_TYPE_CHECK_ON_AS to enforce type checks.
template <typename T> T Napi::Value::UnsafeAs() const;
Casts to another type of Napi::Value, when the actual type is known or assumed.
This conversion does not coerce the type. This does not check the type even if NODE_ADDON_API_ENABLE_TYPE_CHECK_ON_AS is defined. This indicates intentional unsafe type cast. Use Napi::Value::As() if possible.
Napi::Env Napi::Value::Env() const;
Returns the Napi::Env environment this value is associated with. See Napi::Env for more details about environments.
template <typename T> static Napi::Value Napi::Value::From(napi_env env, const T& value);
[in] env: The napi_env environment in which to create the Napi::Value object.[in] value: The Node-API primitive value from which to create the Napi::Value object.Returns a Napi::Value object from an Node-API primitive value.
This method is used to convert from a C++ type to a JavaScript value. Here, value may be any of:
bool - returns a Napi::Boolean.Napi::Number.Napi::Number.const char* (encoded using UTF-8, null-terminated) - returns a Napi::String.const char16_t* (encoded using UTF-16-LE, null-terminated) - returns a Napi::String.std::string (encoded using UTF-8) - returns a Napi::String.std::u16string - returns a Napi::String.Napi::Value - returns a Napi::Value.Napi_value - returns a Napi::Value.bool Napi::Value::IsArray() const;
Returns true if the underlying value is a JavaScript Napi::Array or false otherwise.
bool Napi::Value::IsArrayBuffer() const;
Returns true if the underlying value is a JavaScript Napi::ArrayBuffer or false otherwise.
bool Napi::Value::IsBigInt() const;
Returns true if the underlying value is a JavaScript Napi::BigInt or false otherwise.
bool Napi::Value::IsBoolean() const;
Returns true if the underlying value is a JavaScript true or JavaScript false, or false if the value is not a Napi::Boolean value in JavaScript.
bool Napi::Value::IsBuffer() const;
Returns true if the underlying value is a Node.js Napi::Buffer or false otherwise.
bool Napi::Value::IsDataView() const;
Returns true if the underlying value is a JavaScript Napi::DataView or false otherwise.
bool Napi::Value::IsDate() const;
Returns true if the underlying value is a JavaScript Date or false otherwise.
bool Napi::Value::IsEmpty() const;
Returns true if the value is uninitialized.
An empty Napi::Value is invalid, and most attempts to perform an operation on an empty Napi::Value will result in an exception. An empty Napi::Value is distinct from JavaScript null or undefined, which are valid values.
When C++ exceptions are disabled at compile time, a method with a Napi::Value return type may return an empty Napi::Value to indicate a pending exception. Thus, when C++ exceptions are not being used, callers should check the result of Env::IsExceptionPending before attempting to use the value.
bool Napi::Value::IsExternal() const;
Returns true if the underlying value is a Node-API external object or false otherwise.
bool Napi::Value::IsFunction() const;
Returns true if the underlying value is a JavaScript Napi::Function or false otherwise.
bool Napi::Value::IsNull() const;
Returns true if the underlying value is a JavaScript null or false otherwise.
bool Napi::Value::IsNumber() const;
Returns true if the underlying value is a JavaScript Napi::Number or false otherwise.
bool Napi::Value::IsObject() const;
Returns true if the underlying value is a JavaScript Napi::Object or false otherwise.
bool Napi::Value::IsPromise() const;
Returns true if the underlying value is a JavaScript Napi::Promise or false otherwise.
bool Napi::Value::IsString() const;
Returns true if the underlying value is a JavaScript Napi::String or false otherwise.
bool Napi::Value::IsSymbol() const;
Returns true if the underlying value is a JavaScript Napi::Symbol or false otherwise.
bool Napi::Value::IsTypedArray() const;
Returns true if the underlying value is a JavaScript Napi::TypedArray or false otherwise.
bool Napi::Value::IsUndefined() const;
Returns true if the underlying value is a JavaScript undefined or false otherwise.
bool Napi::Value::StrictEquals(const Napi::Value& other) const;
[in] other: The Napi::Value object to be compared.Returns a bool indicating if this Napi::Value strictly equals another Napi::Value.
Napi::Boolean Napi::Value::ToBoolean() const;
Returns a Napi::Boolean representing the Napi::Value.
This is a wrapper around napi_coerce_to_boolean. This will throw a JavaScript exception if the coercion fails. If C++ exceptions are not being used, callers should check the result of Env::IsExceptionPending before attempting to use the returned value.
Napi::Number Napi::Value::ToNumber() const;
Returns the Napi::Value coerced to a JavaScript number.
Napi::Object Napi::Value::ToObject() const;
Returns the Napi::Value coerced to a JavaScript object.
Napi::String Napi::Value::ToString() const;
Returns the Napi::Value coerced to a JavaScript string.
napi_valuetype Napi::Value::Type() const;
Returns the napi_valuetype type of the Napi::Value.