Assigning scalars to nullable dataframe columns reverts to default dtypes.
#### Code Sample, a copy-pastable example if possible

```python
In [2]: df = pd.DataFrame({'A': ['a', 'b', 'c']}, dtype='string')

In [3]: df.dtypes
Out[3]:
A    string
dtype: object

In [4]: df['A'] = 'test'

In [5]: df.dtypes
Out[5]:
A    object
dtype: object

In [6]: df['A'] = pd.Series(['test'] * len(df), dtype='string', index=df.index)

In [7]: df
Out[7]:
      A
0  test
1  test
2  test

In [8]: df.dtypes
Out[8]:
A    string
dtype: object

# Don't need to set the index with pd.array()
In [9]: df['A'] = pd.array(['test'] * len(df) , dtype='string')

In [40]: df.dtypes
Out[40]:
A    string
dtype: object
```
#### Problem description

Because the new nullable datatypes are not yet the default, it's very tricky to convince dtypes to stay as nullable dtypes. Helpful shortcuts for assigning repeating values to a dataframe column infer the default types, even if the column is currently a nullable type, and the data being added can be represented in the same nullable type. I'm not sure if it's best just to wait until the nullable dtypes become the default, and live with the workarounds shown above for now, or if perhaps another keyword could be added to [`df.assign()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.assign.html) to specify the intended dtype of a column.

Alternatively, is there any scope for adding dtype information to scalars?
Something like:

```python
df['A']  = pd.typed('test', dtype='string')
# OR
df['A'] = pd.StringDtype('test')
```
