Repository: TypeScript
Issue: intellisense to reference computed field directly
Labels: Bug

<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨

Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker.

Please help us by doing the following steps before logging an issue:
  * Search: https://github.com/Microsoft/TypeScript/search?type=Issues
  * Read the FAQ, especially the "Common Feature Requests" section: https://github.com/Microsoft/TypeScript/wiki/FAQ

-->

## Search Terms
suggestions computed key
interface computed key 
intellisense computed key 

## Suggestion

<!-- A summary of what you'd like to see added or changed -->
Currently when using a computed field on a type, intellisense does not show it in the typescript playground, and in VSCode it suggests using `obj[varName]` style.

## Use Cases
I declare some const vars to alias keys in an sql query, and then I want to use those const vars to build a dynamic interface. It's a lot more readable and easier to write if I can get intellisense for dot notation rather than bracket notation

## Examples
```ts
function TestA() {
    const compKey = "bar";
    const obj = {} as unknown as {
        foo: string;
        [compKey]: number;
    };

    //got intellisense for this
    const a = obj.foo;

    //no intellisense for this in ts-playground,
    //in VSCode intellisense suggests obj[compKey]
    //desired intellisense would be obj.var
    const b = obj.bar; 

    //this intellisense is shown in VSCode, but not the playground
    const c = obj[compKey];
}

//Work around
function TestB() {
    let obj;
    {
        const compKey = "bar";
        obj = {} as unknown as {
            foo: string;
            [compKey]: number;
        };
    }

    //got intellisense for this  
    const a = obj.foo;

    //no intellisense for this in ts-playground, but works fine in VSCode
    const b = obj.bar; 

    //error as expected as compKey out of scope
    const c = obj[compKey];
}
```

http://www.typescriptlang.org/play/?ssl=39&ssc=2&pln=1&pc=1#code/GYVwdgxgLglg9mABAFQKYGcoEEAUBKRAbwChEzEIFMK4BbABwGlUBPRAXkQCIAjAQwBOXANylylMNTg8AVhyIBfRH3SJwAazBwA7khVEx5csDhwAXIkwCYYAOaijRgNqUGzFgF0LYELR6oBB3IFUUNEAHpw2zgoRBsoVAAbRJh0VElURBMBRCgAC1SwiWo+eWkZADoTOFCjSK04sATk1PS0rLgc-NTG3PQAWnpEvhZbAThwABMAGjDIm0QANQBlAGE4Scz4pJS0jMsQW1sMKFVylzomVg858M30GAFUScbm3bbM7QnEl-9EcoqADdBEUqLEeGVZBV+IFEMRbt1VNsWnt2j10HkdEgFit1ptpogeCBYlpYvlMkMRmMJmBJqDJLEIJCZBc3NdRAp4ZEAOqddTKcZTYigSCwBAoE4AIXwBiMiVQsXKQTIJEc4jBNDZbE4vEEIjCRnK8kISn0Gi0umUqlVasc1QsVhs9gNttZV083l8-kCLrIITCnNu0ViyPe+2yuQKqjhRmKsVKnAB1Vq5HqcFeO1a4c6kZ6C1Og2Go0FtIJRNiXwE6lUwBsWyQuI2qHp1AhiahMOEcNuAXGOX0qAAHvRUNBnlbNe7-sT-sBLJQRy3Gcy3e4PBygA

## Checklist

My suggestion meets these guidelines:

* [x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
* [x] This wouldn't change the runtime behavior of existing JavaScript code
* [x] This could be implemented without emitting different JS based on the types of the expressions
* [x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
* [x] This feature would agree with the rest of [TypeScript's Design Goals](https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals).