Issue 1:
It's very important that declaring a class field with declare x does not emit a real field.

See this example (playground link):

export class Foo {
x: number;
constructor(x: number) {
this.x = x;
}
}

export class Bar extends Foo {
declare x: 123;
constructor() {
super(123);
}
}

Correctly compiled by TSC:

export class Foo {
x;
constructor(x) {
this.x = x;
}
}
export class Bar extends Foo {
constructor() {
super(123);
}
}

Incorrectly emitted by Deno:

class Foo {
x;
constructor(x){
this.x = x;
}
}
class Bar extends Foo {
x; // <-- should not be here
constructor(){
super(123);
}
}

Now Foo and Bar have two completely different fields named x. The declare keyword is supposed to give you a way around this.

Issue 2:
In the code sample below, the parent Example class sets thing to the first arg of the constructor. For the child class, the constructor knows that the super constructor sets thing to the first arg, so it doesn't assign it directly. If I try declaring the type for the thing property on the Example2 class, I get warnings for deno-ts 2564 and 2612. As shown in the screenshot below, one of the recommended fixes is "Prefix with 'declare'" and it resolves the issue.

If I try using the declared property, it doesn't show any warnings or errors.

import { assertEquals } from "https://deno.land/std@0.97.0/testing/asserts.ts";

interface Thing {
x: number;
y: number;
}

interface Thing2 extends Thing {
z: number;
}

class Example {
thing: Thing;

constructor(thing: Thing) {
this.thing = thing;
}
}

Deno.test("example 1", () => {
const example = new Example({x:2, y:3});
const {x, y} = example.thing;
assertEquals(x * y, 6);
})

class Example2 extends Example {
declare thing: Thing2;

constructor(thing: Thing2) {
super(thing);
}
}

Deno.test("example 2", () => {
const example = new Example2({x:2, y:3, z:4});
const {x, y, z} = example.thing;
assertEquals(x * y * z, 24);
})

If I run the above deno tests, the results change after using --no-check. In the example below, the first 2 runs without --no-check are successful. As soon as I run with --no-check, the example 2 test case fails with an error saying "TypeError: Cannot destructure property 'x' of 'example.thing' as it is undefined.". The following 2 runs without --no-check now fail with the same error. The only way to get the error go away without --no-check is to edit the file, but if I run deno test with --no-check again, it ends up causing the issue to happen again. I believe the correct behavior would be for the tests to pass with or without the --no-check flag.

$ deno test example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
running 2 tests from file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
test example 1 ... ok (3ms)
test example 2 ... ok (1ms)

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out (631ms)

$ deno test example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
running 2 tests from file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
test example 1 ... ok (1ms)
test example 2 ... ok (2ms)

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out (625ms)

$ deno test --no-check example_test.ts
running 2 tests from file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
test example 1 ... ok (3ms)
test example 2 ... FAILED (1ms)

failures:

example 2
TypeError: Cannot destructure property 'x' of 'example.thing' as it is undefined.
at file:///home/kyle/Projects/deno/oauth2_server/example_test.ts:36:10
at asyncOpSanitizer (deno:runtime/js/40_testing.js:21:15)
at resourceSanitizer (deno:runtime/js/40_testing.js:58:13)
at exitSanitizer (deno:runtime/js/40_testing.js:85:15)
at runTest (deno:runtime/js/40_testing.js:199:13)
at Object.runTests (deno:runtime/js/40_testing.js:244:13)
at async file:///home/kyle/Projects/deno/oauth2_server/$deno$test.js:1:1

failures:

example 2

test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out (41ms)

$ deno test example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
running 2 tests from file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
test example 1 ... ok (1ms)
test example 2 ... FAILED (2ms)

failures:

example 2
TypeError: Cannot destructure property 'x' of 'example.thing' as it is undefined.
at file:///home/kyle/Projects/deno/oauth2_server/example_test.ts:36:10
at asyncOpSanitizer (deno:runtime/js/40_testing.js:21:15)
at resourceSanitizer (deno:runtime/js/40_testing.js:58:13)
at exitSanitizer (deno:runtime/js/40_testing.js:85:15)
at runTest (deno:runtime/js/40_testing.js:199:13)
at Object.runTests (deno:runtime/js/40_testing.js:244:13)
at async file:///home/kyle/Projects/deno/oauth2_server/$deno$test.js:1:1

failures:

example 2

test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out (617ms)
$ deno test example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
Check file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
running 2 tests from file:///home/kyle/Projects/deno/oauth2_server/example_test.ts
test example 1 ... ok (3ms)
test example 2 ... FAILED (1ms)

failures:

example 2
TypeError: Cannot destructure property 'x' of 'example.thing' as it is undefined.
at file:///home/kyle/Projects/deno/oauth2_server/example_test.ts:36:10
at asyncOpSanitizer (deno:runtime/js/40_testing.js:21:15)
at resourceSanitizer (deno:runtime/js/40_testing.js:58:13)
at exitSanitizer (deno:runtime/js/40_testing.js:85:15)
at runTest (deno:runtime/js/40_testing.js:199:13)
at Object.runTests (deno:runtime/js/40_testing.js:244:13)
at async file:///home/kyle/Projects/deno/oauth2_server/$deno$test.js:1:1

failures:

example 2

test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out (641ms)

I'm using the latest version of deno.

deno 1.10.3 (release, x86_64-unknown-linux-gnu)
v8 9.1.269.27
typescript 4.2.2