Repository: jquense/yup (ts)

Issue:
baseSchema.concat(otherSchema) overwrites baseSchema properties when otherSchema properties are undefined
**Describe the bug**
Last_Edit: It is because of this code https://github.com/jquense/yup/blob/master/src/schema.ts#L231-L233 , `combined.spec` has every property `undefined`, it would work if `combined.spec` properties were non-existent instead of `undefined`:

`const mergedSpec = { ...base.spec, ...combined.spec };`

First_Edit: Looking a bit deeper, i am now not sure if it is caused by mixed.label(), but since the only thing we change is the yup version and this unexpected behavior occurs, i will keep this issue as is, hopefully someone experienced in yup can investigate or realize the reason why this happens.

Calling mixed.label("Custom label") does work on version 0.31.0 but not on 0.32.5+.
Example screenshots from v.0.31.0 and v.0.32.5+
v.0.31.0:

![before_update](https://user-images.githubusercontent.com/69463668/101590988-7a388b80-39fc-11eb-9f1d-ecd3609fd3e6.png)

v.0.32.5+:

![after_update](https://user-images.githubusercontent.com/69463668/101591037-963c2d00-39fc-11eb-99bd-64dcd6e01e37.png)


**To Reproduce**
Quite complex form logic react and formik, will try to extract the logic and edit here.

**Expected behavior**
I would expect the previous behavior of setting a label to work on error messages.

**Platform (please complete the following information):**
 - Browser [chrome]
 - Version [86]


**Additional context**
Using with react + formik 


Pull request description:
Do not initialize spec values with undefined
Otherwise spreading spec values like previously would overwrite the base schema spec values with undefined.
Closes #1160. 

Patch:
diff --git a/src/schema.ts b/src/schema.ts
index 7ffaccd..d80d1d8 100644
--- a/src/schema.ts
+++ b/src/schema.ts
@@ -137,8 +137,6 @@ export default abstract class BaseSchema<
       strict: false,
       abortEarly: true,
       recursive: true,
-      label: undefined,
-      meta: undefined,
       nullable: false,
       presence: 'optional',
       ...options?.spec,


Test patch:
diff --git a/test/mixed.js b/test/mixed.js
index c6551bf..01ae82a 100644
--- a/test/mixed.js
+++ b/test/mixed.js
@@ -645,6 +645,19 @@ describe('Mixed Types ', () => {
     }.should.throw(TypeError));
   });
 
+  it('concat should not overwrite label and meta with undefined', function () {
+    const testLabel = "Test Label"
+    const testMeta = {
+      testField: "test field"
+    }
+    let baseSchema = mixed().label(testLabel).meta(testMeta)
+    const otherSchema = mixed()
+
+    baseSchema = baseSchema.concat(otherSchema)
+    expect(baseSchema.spec.label).to.equal(testLabel)
+    expect(baseSchema.spec.meta.testField).to.equal(testMeta.testField)
+  })
+
   it('concat should allow mixed and other type', function () {
     let inst = mixed().default('hi');