JSFiddle - React, Tailwind, and code Playground

JavaScript

var person = new Person("Aadit M Shah", 20);

person.name = 0;       // it won't set the name
person.age = "twenty"; // it won't set the age

alert(person.name);
alert(person.age);

function Person(name, age) {
    var private = {
        name: name,
        age: age
    };

    Object.defineProperties(this, {
        name: getAccessor(private, "name", "String"),
        age: getAccessor(private, "age", "Number")
    });
}

function getAccessor(obj, key, type) {
    return {
        enumerable: true,
        configurable: true,
        get: function () {
            return obj[key];
        },
        set: function (value) {
            if (typeOf(value) === type)
                obj[key] = value;
        }
    };
}

function typeOf(value) {
    return Object.prototype.toString.call(value).slice(8, -1);
}